今天我通过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
失败
答案 0 :(得分:2)
这被微软确认为一个错误,并于2017年4月30日星期六/星期日确定。
答案 1 :(得分:1)
在发出PUT调用时包含Authorization标头可能会导致HTTP 401 Unauthoized响应。只应在第一步发出POST时发送Authoization标头和承载令牌。在发布PUT时不应包含它。
如果从PUT中删除Authorization: Bearer XXX
标题,则应解决此问题。