OneDrive中嵌入的共享文件夹

时间:2017-05-23 14:33:32

标签: c# onedrive

似乎无法使用OneDrive SDK c#从OneDrive中嵌入的共享文件夹下载/上传文件。

模拟行为的步骤:

  1. 用户“A”与用户“B”共享名为“Shared01”的Onedrive文件夹 “修改”权限;
  2. 用户“B”将“Shared01”合并到自己的Onedrive:文件夹中 “Shared01”出现在“B”的根目录中;
  3. 使用c#SDK(OneDriveApiBrowser.sln)和用户“B” 凭据,文件夹“Shared01”在根目录中正确显示, 但是:
  4. 如果您在“Shared01”文件夹中导航,则不会显示存储在该文件夹中的文件;

    您无法上传/下载或修改文件夹中的文件。

    另外,如果您尝试通过请求使用“Shared01”中包含的{item-id}文件:

    using (var stream = await this.oneDriveClient.Drive.Items[itemToOpen.Id].Content.Request().GetAsync())
    

    别名:

    GET /drive/items/{item-id}/content
    

    您收到以下错误:

    "{Code: itemNotFoundThrow site: 29a3.1155Message: Item does not exist}"
    

    过去,这个要求奏效了。

1 个答案:

答案 0 :(得分:0)

This API documentation解释了这一点,概念应该映射到您对SDK的使用。基本上,当您向驱动器添加共享文件夹时,实质上是添加指针。可以通过RefDate___构面的存在来检测这些指针,该构面将包含共享文件夹(remoteItem)的标识和该文件夹所在的驱动器(remoteItem.Id)。

要查询共享文件夹,您需要使用以下两条信息构建remoteItem.parentReference.driveId查询:

drives

然后您可以使用以下方式让孩子们使用:

oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{remoteItem.Id}]

随后使用以下方式下载儿童:

oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{remoteItem.Id}].Children

OR

oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{remoteItem.Id}].Children[{child.name}]

过去使用oneDriveClient.Drives[{remoteItem.parentReference.driveId}].Items[{child.Id}] drive 可能有效,但鉴于错误的驱动器被定位,这绝对不是意图。