我在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
。
如何获得刷新令牌?
答案 0 :(得分:5)
您已部分更正,如果您请求refresh_token
范围并您正在使用offline_access
授权流程,则只会收到authorization_code
。
使用implicit
授权时,刷新令牌不可用,使用client_credentials
授权时不需要。使用client_credentials
时,用户无法通过身份验证,因此无需刷新"因为您可以在需要时简单地请求新令牌。
答案 1 :(得分:1)
不需要refresh_token
。
只要尚未撤销管理员同意,我们就会在需要时提出新的access_token
。