OneDrive 2.0下载文件内容401 HTTP代码

时间:2017-01-31 15:48:29

标签: c# onedrive

我创建了一个Azure AD应用程序,它使用应用程序权限对OneDrive API具有完全访问权限(R& W)。 (我的应用程序是一个守护程序应用程序。)这些权限被授予&批准。

HTTP GET https://{MyTenant}.sharepoint.com/_api/v2.0/drives//root://Document.docx

返回200,内容包含有关文件的JSON信息

GET 2016-12-24T14:15:31.458请求uri:

https://{MyTenant}.sharepoint.com/_api/v2.0/drives//root://Document.docx:/content

2016-12-24T14:15:31.888 StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers: { X-SharePointHealthScore: 0 SPRequestGuid: c935c49d-a0fa-3000-a357-32b18090ecd4 request-id: c935c49d-a0fa-3000-a357-32b18090ecd4 Strict-Transport-Security: max-age=31536000 X-FRAME-OPTIONS: SAMEORIGIN SPRequestDuration: 140 SPIisLatency: 1 MicrosoftSharePointTeamServices: 16.0.0.6008 X-Content-Type-Options: nosniff X-MS-InvokeApp: 1; RequireReadOnly Cache-Control: private Date: Sat, 24 Dec 2016 14:15:31 GMT P3P: CP="ALL IND DSP COR ADM CONo CUR CUSo IVAo IVDo PSA PSD TAI TELo OUR SAMo CNT COM INT NAV ONL PHY PRE PUR UNI" Server: Microsoft-IIS/8.5 WWW-Authenticate: NTLM X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Content-Length: 16 Content-Type: text/plain; charset=utf-8 } 2016-12-24T14:15:31.888 401 UNAUTHORIZED

我正确添加了Authorization标头。我创建了一个上传函数,它将文件发送到同一个文档库,并且工作正常,与删除功能相同。

这个401的原因是什么,只有在请求文件的内容时?我怎么能解决这个问题?

我将JWT令牌加载到jwt.io中:它有以下角色:“角色”:[ "TermStore.ReadWrite.All", "Sites.Manage.All", "TermStore.Read.All", "Sites.Read.All", "Sites.ReadWrite.All", "Sites.FullControl.All" ]这里发生了什么?请求的URI为:https://<myTenantName>.sharepoint.com/_api/v2.0/drives/<myDr‌​iveName>/root:/faas.‌​pptx:/content

使用两种类型的GET请求时GET / drive / items / {item-id} / content GET /drive/root:/{path and filename}:/content -> return 401 Unauthorized

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:0)

不幸的是,这是OneDrive for Business和“仅限应用”场景的长期问题。您可以在https://github.com/OneDrive/onedrive-api-docs/issues/280处跟踪问题。