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_token
的 tid: 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 |