author: rgregg ms.author: rgregg ms.date: 09/10/2017 title: "访问共享项目" ms.openlocfilehash: d396e7bb79f3c2bbc9c824d48b6fa3df4a5ef26c ms.sourcegitcommit: 7aea7a97e36e6d146214de3a90fdbc71628aadba ms.translationtype: HT ms.contentlocale: zh-CN

ms.lasthandoff: 09/28/2017

访问共享 DriveItem

通过使用 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}

路径参数

参数名称 说明
sharingTokenOrUrl 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('+','-');

响应

如果成功,此方法在响应正文中返回 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"
    }
  },
  "remoteItem": { 
    "driveId": "",
    "id": ""
  }
}

直接访问共享项目

虽然 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 始终要求进行身份验证,无法用于在没有用户上下文的情况下访问匿名共享内容。