如何使用访问令牌在做GET请求Sharepoint文件?



我使用sharepoint作为云存储。我现在在那里有一些。pdf文件,并向公众开放。所以我可以在匿名窗口通过这个url打开文件。

我需要在另一个系统(Salesforce)中使用当前文件,并且我需要进行api调用以获取这些文件(base64)。

我通过这个端点获得了access_token: https://accounts.accesscontrol.windows.net

邮差请求图片

这是文件的公共url: https://lpnu-my.sharepoint.com/personal/marian_lyzhychka_mtrte_2021_edu_lpnu_ua/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fmarian%5Flyzhychka%5Fmtrte%5F2021%5Fedu%5Flpnu%5Fua%2FDocuments%2FWhoMovedMyCheese%281%29%2Epdf&parent=%2Fpersonal%2Fmarian%5Flyzhychka%5Fmtrte%5F2021%5Fedu%5Flpnu%5Fua%2FDocuments&ga=1

当我尝试发送GET请求到这个端点并设置接收到的Access_token为承载令牌时,我收到401(未经授权)。

我可以得到文件,如果我从开发人员工具得到cookie,并设置为头。但是对于每个文件cookie是不同的,它只适用于我的测试。

你能解释一下我做错了什么吗?以及如何通过请求(JavaScript)访问公共文件。谢谢你!

根据我的研究和测试,在生成access_token时,是否向外接程序授予了权限,授予了哪些权限?

请尝试授予Full Control权限,例如:在"权限请求XML"框中输入以下XML:

<AppPermissionRequests AllowAppOnlyPolicy="true">
<AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>

如果你想在SharePoint中获取文件,你可以使用以下Rest API:

GET https://{site_url}/_api/web/lists/GetByTitle('Test')/items
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"

如果你想获得一个特定的文件,你可以使用下面的REST API:

GET https://{site_url}/_api/web/lists/GetByTitle('Test')/items({item_id})
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"

更多参考信息:

Rest API:使用Rest

处理列表和列表项生成访问令牌并访问SharePoint:在4步中使用postman工具访问SharePoint在线数据

参考类似的问题:如何使用访问令牌在Sharepoint文件的GET请求?

注:微软提供这些信息是为了方便您。这些网站不受微软控制。微软不能对在那里找到的任何软件或信息的质量、安全性或适用性作出任何陈述。在从上述链接获取任何建议之前,请确保您完全了解风险。

最新更新