访问共享 DriveItem

命名空间:microsoft.graph

通过使用 shareId 或共享 URL 访问共享 DriveItem 或共享项目集合。

要与此 API 一起使用共享 URL,应用需要将此 URL 转换为共享令牌

权限

要调用此 API,需要以下权限之一。要了解详细信息,包括如何选择权限的信息,请参阅权限

权限类型 权限(从最低特权到最高特权)
委派(工作或学校帐户) Files.ReadWrite、Files.ReadWrite.All、Sites.ReadWrite.All
委派(个人 Microsoft 帐户) Files.ReadWrite、Files.ReadWrite.All
应用程序 Files.ReadWrite.All、Sites.ReadWrite.All

HTTP 请求

GET /shares/{shareIdOrEncodedSharingUrl}

路径参数

参数名称 说明
shareIdOrEncodedSharingUrl string 必需。 API 返回的共享令牌或正确编码的共享 URL。

编码共享 URL

若要编码共享 URL,请使用以下逻辑:

  1. 首先,使用 base64 编码 URL。
  2. 删除值末尾的 = 字符,将 / 替换成 _,将 + 替换成 -,从而将 base64 编码结果转换成未填充的 base64url 格式
  3. u! 追加到字符串的开头。

例如,若要对 URL 进行 C# 编码,请使用以下代码:

string sharingUrl = "https://onedrive.live.com/redir?resid=1231244193912!12&authKey=1201919!12921!1";
string base64Value = System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(sharingUrl));
string encodedUrl = "u!" + base64Value.TrimEnd('=').Replace('/','_').Replace('+','-');

可选的请求标头

名称 类型 说明
Prefer string 可选。 设置为下面记录 prefer 的值之一。

首选标头值

名称 说明
redeemSharingLink 如果 shareIdOrEncodedSharingUrl 是共享链接,则向调用方授予对项目的持久访问权限
redeemSharingLinkIfNecessary 与 redeemSharingLink 相同,但仅保证在此请求的持续时间内授予访问权限

redeemSharingLink 应视为等效于导航到浏览器 (接受共享手势) 的共享链接的调用方,而 redeemSharingLinkIfNecessary 适用于目的只是速览链接元数据的方案。

响应

如果成功,此方法在响应正文中返回 200 OK 响应代码和 sharedDriveItem 资源。

示例

请求

下面是一个请求检索共享项目的示例:

GET /shares/{shareIdOrEncodedSharingUrl}

响应

下面是一个响应示例。

HTTP/1.1 200 OK
Content-type: application/json

{
  "id": "B64397C8-07AE-43E4-920E-32BFB4331A5B",
  "name": "contoso project.docx",
  "owner": {
    "user": {
      "id": "98E88F1C-F8DC-47CC-A406-C090248B30E5",
      "displayName": "Ryan Gregg"
    }
  }
}

直接访问共享项目

虽然 SharedDriveItem 包含一些有用的信息,但大多数应用程序都需要直接访问共享 DriveItemSharedDriveItem 资源包括 项目 关系,这些关系可以访问共享项目范围内的内容。

示例(单个文件)

请求

通过请求 driveItem 关系,将返回共享的 DriveItem

GET /shares/{shareIdOrUrl}/driveItem

响应

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
  "name": "contoso project.docx",
  "eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
  "file": {},
  "size": 109112
}

示例(共享文件夹)

请求

通过请求 driveItem 关系并展开 集合,将同时返回共享的 DriveItem 以及共享文件夹内的文件。

GET /shares/{shareIdOrUrl}/driveItem?$expand=children

响应

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": "9FFFDB3C-5B87-4062-9606-1B008CA88E44",
  "name": "Contoso Project",
  "eTag": "2246BD2D-7811-4660-BD0F-1CF36133677B,1",
  "folder": {},
  "size": 10911212,
  "children": [
    {
      "id": "AFBBDD79-868E-452D-AD4D-24697D4A4044",
      "name": "Propsoal.docx",
      "file": {},
      "size": 19001
    },
    {
      "id": "A91FE90A-2F2C-4EE6-B412-C4FFBA3F71A6",
      "name": "Update to Proposal.docx",
      "file": {},
      "size": 91001
    }
  ]
}

错误响应

请阅读 错误响应 主题,了解有关如何返回错误的详细信息。

注解

  • 对于 OneDrive for Business 和 SharePoint,共享 API 始终要求进行身份验证,无法用于在没有用户上下文的情况下访问匿名共享内容。