如何在没有用户的情况下获得访问权限
how to get access without a user
我正在尝试遵循此 Get access without a user to get access token. I am getting access token using API request https://login.microsoftonline.com/<-tenant-id->/oauth2/token。当我使用上面给出的第 5 步 link 我得到以下错误:
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Access token validation failure. Invalid audience.",
"innerError": {
"request-id": "e9e9820e-2a3f-411a-bc77-760c9369fc8f",
"date": "2020-01-02T06:17:41"
}
}
}
我已使用以下权限注册应用程序:Calendars.Read、Calendars.Read写入、Sites.Read.All、User.Read、User.Read。全部并已生成秘密密钥和注册重定向 url 为:
User.Read.全部.
我的问题是:
1.我在创建应用程序时做错了什么吗?
2. 为什么 link 的第 4 步不起作用?
3. 我是否使用上面给定的 api 请求获得了错误的访问权限?
在第 5 步中,它调用了 Microsoft Graph - Get a user
,因此请确保您的应用在 Microsoft Graph 中具有 User.Read.All
应用程序权限(必须是 application
权限,而不是 delegated
权限),添加权限后如下图(注意:不要忘记点击Grant admin consent按钮)
在您提供的文档中,它使用 v2.0 端点 /oauth2/v2.0/token
,但您在问题中使用 v1.0 端点 /oauth2/token
。
所以请将请求 URL 更改为 /oauth2/v2.0/token
,然后使用下面的请求。
请求URL:
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
请求正文:
client_id=xxxxxxxxxxxxxxx
&scope=https://graph.microsoft.com/.default
&client_secret=xxxxxxxxxxxxxxxx
&grant_type=client_credentials
您可以在postman.
中获取令牌
然后使用令牌调用Get a user
API:
GET https://graph.microsoft.com/v1.0/users/<object-id of the user>
我正在尝试遵循此 Get access without a user to get access token. I am getting access token using API request https://login.microsoftonline.com/<-tenant-id->/oauth2/token。当我使用上面给出的第 5 步 link 我得到以下错误:
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Access token validation failure. Invalid audience.",
"innerError": {
"request-id": "e9e9820e-2a3f-411a-bc77-760c9369fc8f",
"date": "2020-01-02T06:17:41"
}
}
}
我已使用以下权限注册应用程序:Calendars.Read、Calendars.Read写入、Sites.Read.All、User.Read、User.Read。全部并已生成秘密密钥和注册重定向 url 为: User.Read.全部.
我的问题是: 1.我在创建应用程序时做错了什么吗? 2. 为什么 link 的第 4 步不起作用? 3. 我是否使用上面给定的 api 请求获得了错误的访问权限?
在第 5 步中,它调用了 Microsoft Graph - Get a user
,因此请确保您的应用在 Microsoft Graph 中具有 User.Read.All
应用程序权限(必须是 application
权限,而不是 delegated
权限),添加权限后如下图(注意:不要忘记点击Grant admin consent按钮)
在您提供的文档中,它使用 v2.0 端点 /oauth2/v2.0/token
,但您在问题中使用 v1.0 端点 /oauth2/token
。
所以请将请求 URL 更改为 /oauth2/v2.0/token
,然后使用下面的请求。
请求URL:
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
请求正文:
client_id=xxxxxxxxxxxxxxx
&scope=https://graph.microsoft.com/.default
&client_secret=xxxxxxxxxxxxxxxx
&grant_type=client_credentials
您可以在postman.
中获取令牌然后使用令牌调用Get a user
API:
GET https://graph.microsoft.com/v1.0/users/<object-id of the user>