可恢复上传返回上传块时未经授权

时间:2017-04-27 11:14:51

标签: onedrive microsoft-graph

今天我通过Microsoft Graph API解决了OneDrive的可恢复上传功能问题,如here所述。我有以前工作的集成测试,现在失败了。

我成功致电createUploadSession并获得uploadUrl即可使用。我已用" XXX"替换了实际的令牌。这里。

POST https://graph.microsoft.com/V1.0/groups/273c2c33-8533-445d-ae65-4b63be296995/drive/root:/c2fa1a83-74f3-444b-9263-c9539ee3eae2.txt:/createUploadSession HTTP/1.1
Authorization: Bearer XXX

{
  "item": {
    "@microsoft.graph.conflictBehaviour": "replace"
  }
}

响应:

{
    "@odata.context": "https://graph.microsoft.com/V1.0/$metadata#microsoft.graph.uploadSession",
    "expirationDateTime": "2017-04-27T11:07:50.5650598Z",
    "nextExpectedRanges": ["0-"],
    "uploadUrl": "https://sageglodbizp.sharepoint.com/sites/SharePointTests/_api/v2.0/drive/items/01LQXPMG56Y2GOVW7725BZO354PWSELRRZ/uploadSession?guid='9d14ed72-e532-442e-94e8-70952b365527'&path='~tmp0B_c2fa1a83-74f3-444b-9263-c9539ee3eae2.txt'&overwrite=True&rename=False&access_token=XXX"
}

所以uploadUrl就在那里。然后,我尝试将一个块放入此URL但得到401 Unauthorized作为响应:

PUT https://sageglodbizp.sharepoint.com/sites/SharePointTests/_api/v2.0/drive/items/01LQXPMG56Y2GOVW7725BZO354PWSELRRZ/uploadSession?guid='9d14ed72-e532-442e-94e8-70952b365527'&path='~tmp0B_c2fa1a83-74f3-444b-9263-c9539ee3eae2.txt'&overwrite=True&rename=False&access_token=XXX HTTP/1.1
Authorization: Bearer XXX

响应

HTTP/1.1 401 Unauthorized

由于我使用的是图谱API提供的网址,我认为这是一个错误。我将同一个承载令牌传递给第二个呼叫作为第一个(我还尝试了没有访问令牌,假设一个在URL中)。

我已尝试使用两个不同的Office 365租户,两者都有相同的结果。

此前已有效。有关为什么停止工作的任何想法? uploadUrl指向我的SharePoint端点而不是Graph API吗?

是否正确?

我还应该补充一点,直接在Graph API上进行不可恢复的上传工作正常。

欢迎提出任何建议。

编辑

这似乎受到您上传的文件名长度的影响:

myfile-123100000000000000000000000.txt成功运作

myfile-1231000000000000000000000000.txt失败

2 个答案:

答案 0 :(得分:2)

这被微软确认为一个错误,并于2017年4月30日星期六/星期日确定。

答案 1 :(得分:1)

根据documentation

  

在发出PUT调用时包含Authorization标头可能会导致HTTP 401 Unauthoized响应。只应在第一步发出POST时发送Authoization标头和承载令牌。在发布PUT时不应包含它。

如果从PUT中删除Authorization: Bearer XXX标题,则应解决此问题。