首页 > 解决方案 > Sharepoint(图形)API 访问 OneDrive 文件列表 - 403 / 404 错误

问题描述

在 Windows 上使用 Postman 并使用与我尝试访问的 onedrive 用户不同的用户帐户,我们在 Sharepoint 中为用户 OneDrive 在 URL 中显示了用户个人文件“我的文件”列表:

https://xxxxxxxxxuk-my.sharepoint.com/personal/rob_xxxxxxxxxlimited_com/_layouts/15/onedrive.aspx

我在这里注册了一个加载项

https://xxxxxxxxxuk-my.sharepoint.com/personal/rob_xxxxxxxxxlimited_com/_layouts/15/appregnew.aspx

我生成了一个clientid,secret,App Domain = localhost,redirect url = https://localhost

我已授予 appinv.aspx 相同位置的权限,单击“信任它”:

我通过访问 client.svc 获得了 TenantId 和资源。我可以轻松获得包含所有这些信息的 access_token:

grant_type  client_credentials

client_id   xxxxxxx-dbce-4a7e-bfd4-b7954546d4f8@xxxxxxx-f51f-4360-8e47-8ac7c82aecf7

 client_secret  xxxxxxx9SDjt6ELYGS4PP5NFLWxCnAWDSvxiH78fzDE=

resource    00000003-0000-0ff1-ce00-000000000000/xxxxxxxxuk-my.sharepoint.com@xxxxxxx-f51f-4360-8e47-8ac7c82aecf7

返回的访问令牌似乎工作 - 最初我们不允许令牌类型,但我们在 powershell 中运行它并且上帝摆脱了那个错误:set-spotenant -DisableCustomAppAuthentication $false

我想要做的是获取此位置的文件和文件夹列表,并最终深入到“录音”文件夹并下载项目。我不确定语法。

https://xxxxxxxxxuk-my.sharepoint.com/personal/rob_xxxxxxxxxlimited_com/_layouts/15/_api/web/lists/getbytitle('My files')/items

这将返回 404。我正在使用在前面的步骤中获得的 Authorization: Bearer eyJ... 和 Accept application/json;odata=verbose headers。

同样的404

https://xxxxxxxxxuk-my.sharepoint.com/personal/rob_xxxxxxxxxlimited_com/_layouts/15/_api/web?$select=Title

任何人都可以帮助我为什么得到这个?是否有一个更基本的 API 请求,对这个文件夹来说更像是一个“hello world”?

这些 URL 不同我得到一个 403 你没有权限:

https://xxxxxxxxxuk-my.sharepoint.com/_api/web/lists/getbytitle('My files')/items?$select=Title
https://xxxxxxxxxuk-my.sharepoint.com/_api/web?$select=Title

标签: sharepointonedrive

解决方案


当您使用凭证流时,您可能需要向已注册的应用授予 APP 权限:

  1. 注册应用

在此处输入图像描述

  1. 授予权限(_layouts/15/appinv.aspx)

    <AppPermissionRequests AllowAppOnlyPolicy="true">
        <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
    </AppPermissionRequests>
    
  2. 获取代币

在此处输入图像描述

  1. 发送 API 请求:

在此处输入图像描述

更多参考:

BR


推荐阅读