使用REST API上传文件到OneDrive

5

我正在尝试使用REST API将简单的文本文件上传到OneDrive。

我在portal.azure.com上创建了应用程序,并添加了以下API权限:

图片描述

我创建了一个令牌:

https://login.microsoftonline.com/<我的租户名称>/oauth2/v2.0/token

发送以下参数:

Content-Type为application/x-www-form-urlencoded,Keep-Alive为true。

我将其作为POST请求发送,并获得带有令牌的JSON。

然后我尝试将文本作为文件上传:

使用以下URL:

https://graph.microsoft.com/v1.0/drive/root://test.txt:/content
  • authorization Bearer {我的令牌字符串}

  • Content-Type为text/plain

  • Body为"The string that needs to upload"

    { "error": { "code": "BadRequest", "message": "Unable to retrieve tenant service info.", "innerError": { "request-id": "098f37d5-96fd-44d0-905b-c147eac223f5", "date": "2020-05-19T11:43:03" } } }

图片描述

我做错了什么?

谢谢您的帮助。

3个回答

1
如果有其他人遇到类似问题,几天前我也遇到了同样的问题,并通过在Azure Active Directory(ADD)中创建租户并切换到此新租户来部分解决它。但是,对于个人Microsoft帐户的这个新租户,我遇到了“租户没有SPO许可证”的错误。这是因为ADD应用程序类型错误,以及我的终结点与个人Microsoft帐户一起使用时不正确。
如果您有一个商业帐户,应该使用带有Office 365商业订阅的帐户并配置您的租户以使用它。像这样配置将按您配置的方式工作。
如果您有个人Microsoft帐户,我分享了一步一步如何解决此问题以及我们帐户类型的限制here

1
如果您想使用Microsoft Graph将文件上传到OneDrive,请参考文档
PUT /drives/{drive-id}/items/{parent-id}:/{filename}:/content
PUT /users/{user-id}/drive/items/{parent-id}:/{filename}:/content

例如,将文件上传到租户中一个用户的onedrive。
1. 创建Azure AD应用程序。 2. 为应用程序配置权限。(Microsoft Graph -> 应用程序权限 -> Files.ReadWrite.All, Sites.ReadWrite.All) 3. 获取访问令牌。
Post  https://login.microsoftonline.com/< My tenantName>/oauth2/v2.0/token
Content-Type application/x-www-form-urlencoded 

grant_type= client_credentials
&client_id= My client id
&client_secret= My client secret
&scope =https://graph.microsoft.com/.default

将文件上传到一个用户的OneDrive

Put https://graph.microsoft.com/v1.0/users/<user object id or upn>/drive/items/root:/test.txt:/content
Authorization : Bearer <Access token>

Content-Type: text/plain


<file content>

enter image description here

此外,请注意,当我们使用 API 上传文件时,���件大小不能超过4MB。如果您想上传大文件,请参考文档文档

谢谢您的解释。我尝试按照您建议的方式进行,但仍然遇到与问题中显示的相同错误:无法检索租户服务信息。我尝试调用此API:https://graph.microsoft.com/v1.0/drive/root - khushi
@khushi,请问您能提供详细的错误信息吗? - Jim Xu
以下是详细的错误信息 { "error": { "code": "BadRequest", "message": "无法检索租户服务信息。", "innerError": { "date": "2020-06-24T09:12:22", "request-id": "7f7685c2-c561-4a79-9fb3-50674d5b4055" } } } - khushi

0

将文件(大小不超过4MB)上传到租户的OneDrive。

使用此命令即可完成操作。

foo@bar:~$ ACCESS_TOKEN=eyJ0eXAiOiJKV1QiLCJub25jZSI6IlZ0MVBN...
foo@bar:~$ curl -X PUT 'https://graph.microsoft.com/v1.0/me/drive/root:/myNewFolder/file.tgz:/content' -H 'Authorization: Bearer '"${ACCESS_TOKEN}"'' -T test.tgz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接