我正在尝试为我注册的Azure AD应用程序获取Bearer令牌,以通过API读取我的所有共享点网站
我遵循了Microsoft的指南,分别是a)grant permissions for the app和b get myself a token
所以我现在a)拥有所有必需的权限:
和b)使用范围https://graph.microsoft.com/.default
这是我的问题:当我尝试获取令牌时,请说https://microsoft.sharepoint-df.com/Sites.Read.All
:
https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token
Body:x-www-form-urlencoded
client_id={appId}
scope=https://microsoft.sharepoint-df.com/Sites.Read.All
client_secret={secret},
grant_type=client_credentials
我得到的都是错误:
"error": "invalid_scope",
"error_description": "AADSTS70011: The provided request must include a 'scope' input parameter. The provided value for the input parameter 'scope' is not valid. The scope https://microsoft.sharepoint-df.com/Sites.ReadWrite.All is not valid.\r\nTrace ID: ...\r\nCorrelation ID: ...\r\nTimestamp: 2019-06-09 07:35:21Z",
"error_codes": [
70011
],
我做错什么了吗?我还尝试了范围https://{{tenantName}}.sharepoint.com/Sites.Read.All
答案 0 :(得分:1)
您正在使用客户端凭据流来获取访问令牌。范围必须是
https://graph.microsoft.com/.default
为此请求中的scope参数传递的值应为 所需资源的资源标识符(应用程序ID URI), 带有.default后缀。对于Microsoft Graph示例, 值为https://graph.microsoft.com/.default。这个值告诉 Microsoft Identity Platform端点是所有直接的端点 您为应用程序(端点)配置的应用程序权限 应该为与您的资源相关联的令牌颁发令牌 要使用。
如果必须使用诸如https://microsoft.sharepoint-df.com/Sites.Read.All
之类的特定范围,则可以使用auth code grant flow来获取访问令牌。