我在https://apps.dev.microsoft.com上创建了一个应用
具有以下应用程序权限:Calendars.Read (Admin Only)
Calendars.ReadWrite (Admin Only)
User.Read.All (Admin Only)
以下是对我有效的唯一流程,它能够订阅另一个租户上的另一个用户的通知,如here所述
管理员同意
然后通过此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
获取访问 token
然后从获得访问 token
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
带标题
Content-Type=application/x-www-form-urlencoded
使用
{tenant}
在回调URL中返回的tenant
的值,和具有键值对的主体
grant_type=client_credentials
client_id=bbb35336-faee-4c10-84b4-34136634db41
client_secret=xxx
scope=https://graph.microsoft.com/.default
这将返回访问 token ,但不返回刷新 token 。
我认为这可能是因为未请求
offline_access
所致。如何获得刷新 token ?
最佳答案
您的说法部分正确,如果您请求refresh_token
范围并且您使用的是offline_access
授予流程,那么您只会收到authorization_code
。
使用implicit
授予时,刷新 token 不可用,使用client_credentials
授予时,刷新 token 是不必要的。使用client_credentials
时,没有经过用户身份验证,因此不需要“刷新” token ,因为您可以在需要时简单地请求新 token 。
关于microsoft-graph-api - Microsoft Graph API不返回刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47588820/