OneDrive API 终结点差异

可从多个不同的 API 终结点获取 OneDrive API。 Microsoft Graph 是访问 OneDrive 个人版、OneDrive for Business 和 SharePoint Online 文件的首选终结点。 在一些企业方案(如 SharePoint Server 2016)中,可能必须使用直接 API 终结点来访问 OneDrive for Business 和 SharePoint 数据,而不使用 Microsoft Graph。 下面详细说明了你可能会注意到的 Microsoft Graph 与直接 API 终结点差异。

差异:

命名空间

方法

使用直接终结点时,方法和操作名称必须有命名空间前缀。 例如,若要对直接终结点使用 sharedWithMe,必须在操作名称前面加上 oneDrive. 作为前缀。 请注意,此前缀区分大小写。

https://{server}/_api/v2.0/drive/oneDrive.sharedWithMe

使用直接终结点时,必须为以下操作或方法的名称加上前缀:

实例注释

返回的带 (@) 符号的项属性也包含命名空间。 使用 Microsoft Graph 时,命名空间始终为 microsoft.graph。 不过,如果访问的是直接 API 终结点,命名空间则不同。

已编档的属性名 (Microsoft Graph) 直接 API 属性名
@microsoft.graph.downloadUrl @content.downloadUrl
@microsoft.graph.sourceUrl @content.sourceUrl
@microsoft.graph.conflictBehavior @name.conflictBehavior

属性名

资源的一些属性名在从 Microsoft Graph 返回时会发生变化。 下表收录了对 Microsoft Graph 和 OneDrive API 不同的资源和属性名。

已编档的属性名 (Microsoft Graph) 直接 API 属性名
folder.view folder.folderView

发现终结点

Microsoft Graph 为使用者和工作/学校帐户提供了一个 API 终结点(即 graph.microsoft.com)。 直接使用 OneDrive API 时,必须发现正确的 OneDrive API 终结点。

若要发现正确的 OneDrive API 终结点,必须使用 Microsoft Graph。

OneDrive 个人版帐户

若要访问 OneDrive 个人版 OneDrive API,应用必须对所有请求使用 https://api.onedrive.com/v1.0 终结点。

可以查看 id_tokentid: 9188040d-6c67-4c5b-b112-36a304b66dad,从而确定登录用户是否是 OneDrive 个人版用户。 若要详细了解如何执行此操作,请参阅 Active Directory v2 协议主题。

OneDrive for Business 和 SharePoint

若要访问 OneDrive for Business 的直接 API 终结点,应用必须先发现用户的“我的网站”URL。 可以向 Microsoft Graph 发出请求,以便返回此信息:

GET https://graph.microsoft.com/v1.0/me?$select=mySite
HTTP/1.1 200 OK
Content-Type: application/json

{
    "mySite": "https://contoso-my.sharepoint.com/personal/rgregg_contoso_com/"
}

然后,可以将 OneDrive API 的 API 路径 _api/v2.0/ 追加到此 URL 中,从而构造 API 终结点:

var apiEndPoint = response.mySite + '_api/v2.0';

在某些情况下,可能无法为工作/学校用户返回 mySite 值。 当帐户尚未创建 OneDrive for Business 时,就会发生这种情况。 如果是这样,应用需要通过 Microsoft Graph 请求获取驱动器的根文件夹,从而使用 Microsoft Graph 预配用户的 OneDrive。

权限

对于对 SharePoint 和 OneDrive for Business 的调用,可以通过 Office 365 SharePoint Online 服务经由 Azure 门户将这些权限范围分配给应用程序。 对于 OneDrive 个人版,直接将作用域字符串传递到 OAuth 工作流,而不需要提前注册。

Microsoft Graph 权限 OneDrive 个人版 Sharepoint 和 OneDrive for Business
Files.Read OneDrive.Read MyFiles.Read
Files.ReadWrite OneDrive.ReadWrite MyFiles.Write
Files.ReadWrite.All OneDrive.ReadWrite Files.ReadWrite.All
Files.ReadWrite.AppFolder OneDrive.AppFolder Files.ReadWrite(Files.ReadWrite.AppFolder 当前不受支持
Sites.Read.All 不适用 Sites.Read.All
Sites.ReadWrite.All 不适用 Sites.ReadWrite.All