Microsoft Graph API不返回刷新令牌

时间:2017-12-01 07:47:58

标签: microsoft-graph

我在https://apps.dev.microsoft.com

上创建了一个应用

使用以下应用程序权限:

Calendars.Read (Admin Only) Calendars.ReadWrite (Admin Only) User.Read.All (Admin Only)

以下是我能够订阅其他用户的通知的唯一流程,如上所述here

管理员同意

然后通过此网址成功授予了管理员同意

https://login.microsoftonline.com/common/adminconsent?client_id=bbb35336-faee-4c10-84b4-34136634db41&state=1234&redirect_uri=https%3A%2F%2Fdashmeetings.com%2Fmicrosoft%2Foauth

获取访问令牌

然后从

获取访问令牌
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
带标题的

Content-Type=application/x-www-form-urlencoded

{tenant}在回调网址中返回tenant的值,

和具有键值对的正文

grant_type=client_credentials
client_id=bbb35336-faee-4c10-84b4-34136634db41
client_secret=xxx
scope=https://graph.microsoft.com/.default

这会返回访问令牌,但不会返回刷新令牌。

我认为这可能是因为未请求offline_access

如何获得刷新令牌?

2 个答案:

答案 0 :(得分:5)

您已部分更正,如果您请求refresh_token范围您正在使用offline_access授权流程,则只会收到authorization_code

使用implicit授权时,刷新令牌不可用,使用client_credentials授权时不需要。使用client_credentials时,用户无法通过身份验证,因此无需刷新"因为您可以在需要时简单地请求新令牌。

答案 1 :(得分:1)

不需要refresh_token

只要尚未撤销管理员同意,我们就会在需要时提出新的access_token