2016-06-28 54 views
0

我試圖去與OneDrive交手,使用此教程:從桌面訪問OneDrive應用

https://msdn.microsoft.com/en-us/library/hh826529.aspx

當我在代碼中運行,它多遠的makeAccessTokenRequest功能,發送以下requestURL:

「的https://login.live.com/oauth20_token.srf?client_id=[myclientID] & client_secret = [myclientsecret] & REDIRECT_URI = https://開頭login.live.com/oauth20_desktop.srf & grant_type =授權代碼&代碼= [AUTHCODE]」

(請忽略空格之後 「https:」 開頭,我不得不在此處添加允許的問題)

[myclientid],[myclientsecret]和[AUTHCODE]所有出現要正確填充。它似乎得到一個響應,因爲它運行函數「accessToken_DownloadStringCompleted」,但會拋出一個「TargetInvocationException」錯誤,錯誤的內部消息是「」遠程服務器返回錯誤:(400)錯誤的請求。「。

任何人都可以扔在這個任何光線?我完全新本,所以如果我的問題做道歉沒有意義,或者是惱人模糊..

回答

0

請求到oauth20_token.srf終點需要一個POST而不是查詢字符串,因爲你沒有提到你用來構建HTTP請求的代碼,所以很難提供一個示例,但在我的示例OAuth中查看RedeemAuthorizationCodeAsync 2項目的想法。

傳出請求應該是這樣的:

POST https://login.live.com/oauth20_token.srf 
Content-Type: application/x-www-form-urlencoded 

client_id={client_id}&redirect_uri={redirect_uri}&client_secret={client_secret}&code={code}&grant_type=authorization_code 

您也可能會發現本教程更容易跟隨比你鏈接的一個:https://dev.onedrive.com/auth/msa_oauth.htm

如果您正在使用OneDrive(您標記了OneDrive後)標記,那麼您可能需要考慮使用OneDrive SDK。它包括幾種類型的.NET項目的身份驗證,所以你不需要弄清楚如何自己進行身份驗證。

+0

非常感謝您的幫助,我非常感謝。它會調用RedeemAuthorizationCodeAsync(),它似乎使用正確的clientid,clientsecret和auth代碼構建查詢。但它返回null爲「令牌」。 這可能與應用程序註冊OneDrive的方式有關嗎?它沒有列出應用程序頁面上的平臺,但每當我嘗試添加「web」平臺時,它都會簡單地保存,而無需任何平臺。 再次感謝您的幫助。 – Fritz