今天,我通过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
是存在的。于是,我尝试在响应把一个块到这个网址却得到了一个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
失败
你有问题的链接吗? – toussa
@toussa没有抱歉,我们刚刚在电子邮件中提供了这些信息,其中说一些数据已添加到'access_token'查询参数中,该参数将URL推送到SharePoint的2048个字符限制之内。这就是它受文件名长度影响的原因。 –