2017-04-05 46 views
0

我看過其他帖子非常相似,但我沒有找到真正的答案。有人說「它即將到來」,那些是舊的。無法訪問Microsoft Graph用戶日曆403

我使用管理員憑證對我們的O365進行身份驗證,並嘗試提取日曆信息。該範圍包含Calendars.ReadWrite(屬於App-Only和Delegate,直到範圍),但它始終返回403. ErrorAccessDenied,「Access is denied。Check credentials and try again」

Calendar doc視圖顯示它可以在請求中發送給用戶/ {id},並且當我列出所有用戶時,該ID會回來。當然,如果我使用我的,它的作品。

如果這個相同的作用域名稱確實存在一個App-Only範圍與一個委託範圍,那麼您如何指定它?

是否有我必須在O365中爲我的管理員用戶指定所以它有權限?我可以在O365中使用該帳戶刪除或創建任何用戶,因此看起來它應該具有它所需要的。

謝謝

回答

0

所以,應用程序只有一個略有不同的流量。

首先,不是在「https://login.microsoftonline.com/common/oauth2/v2.0/authorize」處對用戶進行身份驗證,而是在「https://login.microsoftonline.com/common/adminconsent」處對其進行身份驗證。

第二,你傳入相同的參數減去「範圍」。範圍取決於您在apps.dev.microsoft.com上註冊的應用程序中定義的應用程序權限。

第三,當你收到你的回調時,你將不會有一個「代碼」用來檢索你的訪問刷新令牌。相反,您將收到「tenant」屬性和「admin_consent」屬性。 「admin_consent」會告訴你你是否有權利。第四,在請求訪問令牌時,您不會提供「範圍」或「代碼」參數,但您將提供一個「資源」參數,其值爲「https://graph.microsoft.com」。

最後,您聯繫以獲取令牌的URL將從「https://login.microsoftonline.com/common/oauth2/v2.0/token」更改爲「https://login.microsoftonline.com/ {tenant}/oauth2/token」,其中{tenant}將是返回的值。

請注意,在缺少「v2.0」的網址中。這不是一個錯字。如果您不從路徑中刪除它,您將收到有關無效或缺少「範圍」參數的錯誤。

一旦它成功返回您的訪問和刷新令牌,該流程似乎遵循正常的委派訪問。

下面是Microsoft給我的幾個鏈接,以及他們的指導幫助解決這個問題。

https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-v2-scopes#using-the-admin-consent-endpoint

https://developer.microsoft.com/en-us/graph/docs/authorization/app_only

(非常感謝傑夫在微軟)

相關問題