Microsoft Graph API不返回刷新令牌

kar*_*rel 4 microsoft-graph

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

具有以下应用程序权限:

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

以下是唯一的流入已经为我工作才能够订阅其他用户的通知,上一个房客,如所描述这里

管理员同意

然后通过此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
Run Code Online (Sandbox Code Playgroud)

获取访问令牌

然后从获得访问令牌

POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
Run Code Online (Sandbox Code Playgroud)

带标题

Content-Type=application/x-www-form-urlencoded
Run Code Online (Sandbox Code Playgroud)

{tenant}价值tenant在回调URL返回,

和具有键值对的主体

grant_type=client_credentials
client_id=bbb35336-faee-4c10-84b4-34136634db41
client_secret=xxx
scope=https://graph.microsoft.com/.default
Run Code Online (Sandbox Code Playgroud)

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

我认为这可能是因为offline_access未要求。

如何获得刷新令牌?

Mar*_*eur 7

您部分正确,只有refresh_token在您请求offline_access合并范围并且正在使用authorization_code授权流程时,您才会收到。

使用implicit授权时,刷新令牌不可用,使用授权时,刷新令牌是不必要的client_credentials。使用时client_credentials,无需经过用户身份验证,因此不需要“刷新”令牌,因为您可以在需要时简单地请求新令牌。