提问者:小点点

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


我使用Microsoft graph创建了一个将文件上传到OneDrive的web应用程序。文件上传使用上传会话。https://learn . Microsoft . com/ja-jp/graph/API/drive item-createuploadsession?视图=图形-Rest-1.0

如果上载目标帐号是企业帐号,则上载文件失败。发生的错误是{"error ": {" innerError ": {" code":"无效令牌"},"code":"未验证","message":"此访问令牌在此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个答案

匿名用户

使用PUT时,不要发送令牌,因为那里不接受令牌。

在发出PUT调用时包含Authorination标头可能会导致HTTP 401 Un授权响应。

只有在第一步发出POST时,才应发送授权标头和承载令牌。发布PUT时不应包含此项。

匿名用户

这个问题已经解决了。原因是web应用程序的HTTP客户端重新安排了URL的查询参数。我用了Ruby on Rails的faraday,所以改了这个。