2017-06-10 1 views
0

1つのドライブにAD v2 Oath認証コードフローを使用しようとしています。 アプリケーションがWebプラットフォームとしてアカウントに正しく登録されています。 私は認証コードを取得することですが、私はトークンを取得するためにそれを使用するつもりだとき、私は常に取得1つのドライブAPI認証コードリクエストは常に期限切れです

{ 
    "error": "invalid_grant", 
    "error_description": "AADSTS70000: The provided value for the 'code' parameter is not valid. The code has expired.\r\nTrace ID: 95d076f5-6cfa-4de1-ba1a-a81066cf1200\r\nCorrelation ID: 4cddfa50-228b-431a-8746-483e77a273e1\r\nTimestamp: 2017-06-10 09:50:38Z", 
    "error_codes": [ 
    70000 
    ], 
    "timestamp": "2017-06-10 09:50:38Z", 
    "trace_id": "95d076f5-6cfa-4de1-ba1a-a81066cf1200", 
    "correlation_id": "4cddfa50-228b-431a-8746-483e77a273e1" 
} 

私の要求

Dim url As New System.Text.StringBuilder 
url.Append("grant_type=authorization_code") 
url.Append("&client_id=" + clientid) 
url.Append("&client_secret=" + clientsecret) 
url.Append("&redirect_uri=" + System.Web.HttpUtility.UrlEncode(redirecturl)) 
url.Append("&code=" + authcode) 
url.Append("&scope=" + ("offline_access%20files.readwrite")) 
Dim baseaddress = "https://login.microsoftonline.com/common/oauth2/v2.0/token" 

Dim buffer As Byte() = System.Text.Encoding.ASCII.GetBytes(url.ToString) 
Dim req = Net.HttpWebRequest.Create(baseaddress) 
req.Proxy = Nothing 

req.Method = "Post" 
req.ContentType = "application/x-www-form-urlencoded" 

Dim strm As System.IO.Stream = req.GetRequestStream() 
strm.Write(buffer, 0, buffer.Length) 
strm.Close() 
Dim resp As System.Net.HttpWebResponse = req.GetResponse() 
Dim response = New IO.StreamReader(resp.GetResponseStream, False).ReadToEnd 
Return response 

答えて

0

間違いがリダイレクトURLとありました。私は生産URLを設定した後、トークンプロセスをデバッグするためにコードをlocalhostにコピーしていました。 locahostへのリクエストのリダイレクトURLを変更すると、魅力的に働きました。私の意見は、それらのドキュメントに言及する必要があります(Googleのドライブのような他のAPIでこのような問題は一度もなかった)

関連する問題