2016-07-01 31 views
4

我在嘗試構建一個簡單的Ruby應用程序,它可以連接到Microsoft Graph API並獲取有關用戶的基本信息,例如經理或直接報告。Microsoft Graphs scopes v2 oauth

我跟着0365教程,我有一個可以獲取用戶郵件的工作應用程序。然而,當我試圖然後使用會話令牌來查詢圖形API,我得到一個錯誤:

response.body 
=> "{\r\n \"error\": {\r\n \"code\": \"InvalidAuthenticationToken\",\r\n \"message\": \"Access token validation failure.\",\r\n \"innerError\": {\r\n  \"request-id\": \"18cbc6be-5254-400c-9780-7427376587fb\",\r\n  \"date\": \"2016-06-30T22:21:55\"\r\n }\r\n }\r\n}" 

我使用範圍

SCOPES = [ 'openid', 'profile', 'https://outlook.office.com/contacts.read', 'offline_access' ] 

我剛剛被提出,包括範圍「https://graph.microsoft.com/user.read」,但是當我加入這個到應用程序甚至打到用戶登錄頁面之前,我得到以下錯誤:

AADSTS70011: The provided value for the input parameter 'scope' is not valid. The scope openid profile offline_access https://graph.microsoft.com/user.read is not valid. 

任何幫助,將不勝感激!

+0

您能發佈您用於訪問登錄頁面的完整URL嗎? –

+0

https://login.microsoftonline.com – Lievcin

+0

我的意思是所有的參數:)。當出現錯誤時,您可以從瀏覽器複製它。 –

回答

7

好的。問題是您包括Outlook(https://outlook.office.com/contacts.read範圍)和圖(https://graph.microsoft.com/user.read範圍)的範圍。不幸的是,Azure的授權端點不支持這樣的混合範圍。您可以刪除Outlook範圍(假設您不需要它),也可以將其更改爲等效圖形:https://graph.microsoft.com/contacts.read(如果您需要訪問登錄用戶的個人聯繫人)。

+0

非常感謝Jason。我現在至少可以做/我:) – Lievcin

+0

當我嘗試獲得直接的報告時,我收到一個錯誤消息:代碼:Authorization_RequestDenied,消息:沒有足夠的權限來完成操作。「你知道是否有範圍的資源和是否只有管理員可以訪問它們? – Lievcin

+0

看起來像Graph文檔有錯誤。直接報告的鏈接表示User.Read會起作用,但http://graph.microsoft.io/en-us/docs/授權/ permission_scopes說用User.Read你不能閱讀「導航屬性像經理和直接的報告。」讓我問問圖人們怎麼回事。 –