![](/img/trans.png)
[英]Using Microsoft Graph API refresh token with Delphi OAuth2
[英]Microsoft Graph API not returning refresh token
我在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
獲取訪問令牌
然后從
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
這將返回訪問令牌,但不返回刷新令牌。
我認為這可能是因為未請求offline_access
。
如何獲得刷新令牌?
您部分正確,如果您請求offline_access
范圍並且您正在使用authorization_code
授權流,則只會收到refresh_token
。
使用implicit
授權時,刷新令牌不可用,使用client_credentials
授權時不需要。 使用client_credentials
,沒有用戶通過身份驗證,因此無需“刷新”令牌,因為您只需在需要時請求新令牌。
不需要refresh_token
。
只要尚未撤銷管理員同意,就可以在需要時請求新的access_token
。
如果您想獲得作為長期令牌的refresh_token
,您可以將離線訪問權限offline_access
放入您的范圍。
或者,您也可以使用 scope 上的basic
功能,因為它包含offline_access
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.