Search code examples
onedrivemicrosoft-graph-api

Resumable upload returns Unauthorized when uploading chunk


Today I have a problem with the resumable upload feature of OneDrive via the Microsoft Graph API, as described here. I have integration tests which previously worked, which now fail.

I successfully call createUploadSession and get an uploadUrl to use. I've replaced actual tokens with "XXX" here.

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"
  }
}

Response:

{
    "@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"
}

So the uploadUrl is there. Then, I try to PUT a chunk to this url but get a 401 Unauthorized in response:

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

Response

HTTP/1.1 401 Unauthorized

As I'm using the URL provided by the Graph API, I believe this to be a bug. I'm passing the same bearer token to the second call as the first (I've also tried it with no access token, given that one is in the URL).

I have tried this with two different Office 365 tenants, both with the same result.

This has previously worked. Any thoughts on why this has stopped working? Is it correct that the uploadUrl points to my SharePoint endpoint rather than the Graph API?

I should also add, a non-resumable upload directly to the Graph API works fine.

Any suggestions most welcome.

EDIT:

This seems to be affected by the length of the filename to which you upload:

myfile-123100000000000000000000000.txt works successfully

myfile-1231000000000000000000000000.txt fails


Solution

  • This was confirmed as a bug by Microsoft and fixed on Saturday 29 / Sunday 30 April 2017.