SharePoint Rest API 如何获取访问令牌?

L_H*_*L_H 9 sharepoint sharepoint-online microsoft-graph-api

刚开始使用 SharePoint 和 Microsoft 身份验证,并尝试将 SharePoint 列表放入 JavaScript 应用程序。从 Microsoft 文档中,我需要使用以下内容:

GET https://{site_url}/_api/web/lists/GetByTitle('List Title')
Authorization: "Bearer " + accessToken
Accept: "application/json;odata=verbose"
Run Code Online (Sandbox Code Playgroud)

到处搜索以找到有关如何获取此 accessToken 的明确答案。我可以从 Microsoft 找到的所有文档似乎都已过时。有谁知道当前获取 accessToken 的方法?

小智 9

您可以参考这篇文章获取访问令牌:

https://global-sharepoint.com/sharepoint-online/in-4-steps-access-sharepoint-online-data-using-postman-tool/

Post https://accounts.accesscontrol.windows.net/<Tenant ID>/tokens/OAuth/2
Run Code Online (Sandbox Code Playgroud)

身体:

grant_type     client_credentials
client_id      <Client ID>
client_secret  <Client Secret>
resource       00000003-0000-0ff1-ce00-000000000000/<tenant>.sharepoint.com@<Tenant ID>
Run Code Online (Sandbox Code Playgroud)

我的测试结果:

在此输入图像描述


Chr*_*son 8

要调用特定于 SharePoint 的 API,您需要获取特定于 SPO 的访问令牌。您可以通过执行以下操作将常规 MS Graph 刷新令牌“交换”为 SPO 特定令牌:

  1. 像往常一样从图中获取委托的身份验证令牌(https://docs.microsoft.com/en-us/graph/auth-v2-user
  2. 使用您获得的 refresh_token 并通过再次调用 auth 端点将其交换为 SPO 访问令牌:
POST https://login.microsoftonline.com/{{tenantName}}/oauth2/v2.0/token
Run Code Online (Sandbox Code Playgroud)

使用以下表单数据:

client_id=<APP ID>
client_secret=<APP SECRET>
refresh_token=<REFRESH TOKEN FROM ABOVE>
grant_type=refresh_token
scope=https://<YOUR TENANT NAME>.sharepoint.com/Sites.Read.All
Run Code Online (Sandbox Code Playgroud)
  1. 获取访问令牌并调用 SPO API

您必须确保使用正确的权限注册您的应用。例如,在上述情况下,应用程序必须具有 Sites.Read.All。

  • 它应该被标记为答案!谢谢,它确实有效。@chris-johnson,如果能分享有关此方法的文档中的链接引用,那就太好了。 (3认同)
  • @chris-johnson,你是最棒的。我花了一整天的时间寻找解决方案,只有你的答案对我有帮助。奇迹般有效! (2认同)