2017-02-20 102 views
1

我試圖從訪問代碼中獲取訪問令牌。但400錯誤的請求錯誤的錯誤Microsoft Access令牌請求錯誤 - 400錯誤請求

我使用這個鏈接來獲得訪問代碼

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&response_type=code&redirect_uri=http://localhost/Home/About&scope=mail.read

在這個環節我收到的查詢字符串中的代碼返回URL 代碼的響應= Mh12d04c8-8ea9-c82b-8cc5-b93cf913382c

我使用這個代碼來獲得訪問令牌

https://login.microsoftonline.com/common/oauth2/v2.0/token?redirect_uri=http://localhost:51296/Home/AAA&client_id=xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&client_secret=Rmi2PNLPNM5agLh5aT5G82W&code=Mh12d04c8-8ea9-c82b-8cc5-b93cf913382c&scope=mail.read

但它給400錯誤請求。請幫我解決這個問題。

+0

它通常會返回一個擴展的錯誤代碼和錯誤消息。你可以檢查是否是這種情況,並添加它們? 例如,當我單擊login.microsoftonline.com鏈接時,錯誤頁面右下角顯示它們:「AADSTS90056:此端點只接受POST請求,收到GET請求」。 你的POST會得到不同的錯誤代碼。 – RasmusW

+0

您的重定向uri在通話之間也不匹配。它需要匹配你在應用註冊期間設置的內容 –

+0

@RasmusW不,我沒有得到像這樣的「AADSTS90056」這樣的錯誤。我得到了錯誤的請求錯誤400.請幫助我。 –

回答

2

對於這種類型的問題,如@RasmusW建議的那樣,您可以使用像Fiddler這樣的工具來查找響應中的內部錯誤消息。正如@ Dan Kershaw指出的那樣,您需要確保令牌請求中的回覆地址url應該與授權代碼請求中的回覆地址相匹配。否則,您將收到錯誤:答覆地址'xxxxx'與請求授權碼時提供的答覆地址'xxxx'不匹配。

根據您的要求,您正在使用帶有v2.0端點的授權碼流。您必須在令牌請求中添加「grant_type」參數,授權碼流的值必須爲「authorization_code」。如果內部錯誤消息是「AADSTS90014:請求主體必須包含以下參數:'grant_type」,請首先檢查它。請點擊here瞭解更多關於2.0版端點OAuth 2.0授權碼流程的細節。

我可以用微軟圖形API個人Microsoft帳戶

是.The 2.0端點允許開發人員編寫接受登錄來自微軟帳戶和Azure的AD帳戶的應用程序,使用單一身份驗證端點。

+0

謝謝@南鈺 - MSFT。並請幫助我如何追蹤小提琴手的錯誤? –

+0

您能否爲我提供此代碼示例? –

+0

關於如何使用Fiddler進行調試,您可以在互聯網上獲得很多教程,例如,這個教程:http://www.asjava.com/tools/fiddler-tutorial-how-to-use-fiddler/ 。有關如何使用Microsoft Graph API,您可以單擊https://graph.microsoft.io/en-us/docs/authorization/auth_overview獲取代碼示例。 –