gpt4 book ai didi

office365 - 使用 Microsoft Graph 的 UploadSession 出现 401 错误

转载 作者:行者123 更新时间:2023-12-05 07:47:20 25 4
gpt4 key购买 nike

我正在尝试使用守护程序应用程序将大文件上传到用户的 OneDrive for Business 帐户。我已成功验证并获得不记名 token 、创建文件夹和上传小文件。

对于大文件,我创建了一个上传 session ,但在尝试使用该 session 添加文件部分时收到错误消息。我已经包含了我的 fiddler traces 来尝试诊断这个。我已删除我的敏感信息。

我请求上传 session

POST https://graph.microsoft.com/v1.0/users/{user id}/drive/items/{folder id}:/Test.csv:/createUploadSession HTTP/1.1
Authorization: Bearer {bearer token}
Content-Type: application/x-www-form-urlencoded
Host: graph.microsoft.com
Content-Length: 0

我收到了包含以下内容的回复:

"@odata.context":"https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.uploadSession",
"expirationDateTime":"2016-10-05T11:39:29.5104044Z",
"nextExpectedRanges":["0-"],
"uploadUrl":"https://{my tenant name}.sharepoint.com/personal/name_domain_co_za/_api/v2.0/drive/root:/Backups/Test:/uploadSession?guid='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'&path='~tmp12_Test.csv'&overwrite=True&rename=False"}

然后我尝试 PUT 到那个上传​​ url

PUT https://{my tenant name}.sharepoint.com/personal/name_domain_co_za/_api/v2.0/drive/root:/Backups/Test:/uploadSession?guid='aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa'&path='~tmp12_Test.csv'&overwrite=True&rename=False HTTP/1.1
Authorization: bearer {bearer token}
Content-Range: bytes 0-327679/16333102
Host: {my tenant name}.sharepoint.com
Content-Length: 327680
Expect: 100-continue

然后响应包含以下相关行。

HTTP/1.1 401 Unauthorized
x-ms-diagnostics: 3000006;reason="Token contains invalid signature.";category="invalid_client"

{"error_description":"Invalid issuer or signature."}

我觉得这很奇怪,因为使用当前的应用程序配置,我可以成功地将一个小文件上传到相同的路径,所以除非我误解了什么,否则权限应该没有任何问题。

最佳答案

更新:
实际问题是该请求试图使用仅限应用程序的 token 通过 Graph 对 OneDrive for Business 进行身份验证。不幸的是,目前不支持这种情况,虽然有些情况可能有效,但有一些情况不支持(例如这个)。虽然我们无法对时间表发表评论,但它绝对在我们的关注范围内!

原文:
通过 Graph 将片段上传到 OneDrive for Business 帐户有几个因素。

  1. 身份验证 token 不兼容。换句话说,您用来在图上调用 createUploadSession 的不记名 token 不能用于直接命中 OneDrive for Business 端点的 PUT 请求。这主要是因为 token 绑定(bind)到特定的受众 - https://graph.microsoft.com/ 的 token 将不适用于 https://{my tenant name}.sharepoint .com/.

  2. 由于 #1,返回的 uploadUrl 一开始实际上不应该需要身份验证 - 我们不希望开发人员为不同的端点处理多个身份验证 token 。

似乎 #2 是您概述的再现中不太正确的地方。您能否确认您收到的 uploadUrl 值不包含 access_tokenprooftoken 查询参数?如果是这样,您能否从 createUploadSession 调用的响应中获取 request-id header ?

关于office365 - 使用 Microsoft Graph 的 UploadSession 出现 401 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39873718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com