在OneDrive商业帐户中使用MSGraph上传文件时出错

时间:2019-05-24 05:43:00

标签: office365 microsoft-graph onedrive

我使用Microsoft图形来创建一个将文件上传到OneDrive的Web应用程序。 文件上传使用上传会话。 https://docs.microsoft.com/ja-jp/graph/api/driveitem-createuploadsession?view=graph-rest-1.0

如果上传目标帐户是企业帐户,则

上传文件失败。 发生的错误是 {" error ": {" innerError ": {" code ":" invalidToken "}," code ":" unauthenticated "," message ":" This access token is not valid on this endpoint. "}}

但是,如果上传目标是个人帐户,它将成功 顺便说一下,简单的上传将在企业和个人方面都取得成功。 你知道有什么办法吗?

以下是上传过程。
(1)

POST /me/drive/root:/sample.txt:/createUploadSession
Authorization: Bearer {bearer token}
Content-Type: application/json
{
  "item": {
    "@microsoft.graph.conflictBehavior": "rename",
    "name": "sample.txt"
  }
}

(2)响应

HTTP/1.1 200 OK
Content-Type: application/json

{
  "uploadUrl": "https://our-tenant-my.sharepoint.com/personal/our_tenant_onmicrosoft_com/_api/v2.0/drive/items/aaaa/uploadSession?guid='example'&path='example'&overwrite=False&rename=True&dc=0&tempauth=example",
  "expirationDateTime": "2019-05-24T05:07:08.728Z"
}

(3) 将字节上传到上传会话

PUT https://our-tenant-my.sharepoint.com/personal/our_tenant_onmicrosoft_com/_api/v2.0/drive/items/aaaa/uploadSession?guid='example'&path='example'&overwrite=False&rename=True&dc=0&tempauth=example

(4)返回错误

HTTP/1.1 401
{"error":{"innerError":{"code":"invalidToken"},"code":"unauthenticated","message":"This access token is not valid on this endpoint."}}

顺便说一句,如果是个人帐户,则响应的uploadUrl为

https://api.onedrive.com/rup/example/more~~~

会回来的。
我可以使用此路径上传。 个人帐户和企业帐户的UploadUrl不同,这与该错误有关吗? 有办法解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

使用PUT时不发送令牌,令牌在那里不被接受。

  

在发出PUT调用时包含Authorization标头可能会导致HTTP 401未经授权的响应。

     

仅在第一步期间发布POST时才应发送Authorization标头和承载令牌。发出PUT时不应将其包括在内。

答案 1 :(得分:0)

此问题已解决。 原因是Web应用程序的HTTP客户端重新排列了URL的查询参数。 我使用了Ruby on Rails的法拉第,所以我更改了它。