微软Graph API没有返回刷新令牌。

13

我在 https://apps.dev.microsoft.com 上创建了一个应用程序。

该应用程序具有以下应用权限:

Calendars.Read (仅管理员) Calendars.ReadWrite (仅管理员) User.Read.All (仅管理员)

以下是我成功订阅另一个租户中另一个用户的通知所使用的唯一步骤,具体描述可参见此处

管理员认证

随后通过此URL成功授予了管理员同意。

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}代表在回调URL中返回的tenant值,

并且使用键值对表示的body。

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

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

我认为这可能是因为没有请求offline_access

如何获取刷新令牌?

3个回答

19

你说的有一定道理,只有在使用authorization_code授权流程并且请求了offline_access范围时,才会收到refresh_token

当使用implicit授权方式时,不会提供刷新令牌,并且在使用client_credentials授权方式时也不需要它。当使用client_credentials授权方式时,没有用户进行身份验证,因此不存在“刷新”令牌的需求,可以在需要时简单地请求新令牌。


0
如果您想获取长期令牌refresh_token,可以将offline_access添加到您的范围中。
或者,您也可以使用basic作用域,因为它包含offline_access

0

不需要 refresh_token

只要管理员同意没有被撤销,就可以在需要时请求新的 access_token


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接