2016-04-10 14 views
0

アクセストークンの認証コードを交換しようとしています。私は「なぜ私にはわからない無効なgrant_type youtube api

{ 
    "error" : "invalid_request", 
    "error_description" : "Invalid grant_type:4/AlxtyFqHeOiTC32THJgipkUWtHBO27GqFfgOoOCG9wE" 
} 

:私は、POSTリクエストにするためにASP.NETでHttpClientを使用しています:

var clientId = "clientid"; 
var redirectUri = "http://localhost:65148/Welcome"; 
var clientSecret = "clientsecret"; 

if (code != null) 
{ 
    //Lets exchange the code for a access token 
    using (var client = new HttpClient()) 
    { 
     var values = new Dictionary<string, string> 
     { 
      { "code", code }, 
      { "client_id", clientId }, 
      { "client_secret", clientSecret }, 
      { "redirect_uri", redirectUri }, 
      { "grant_type", code } 
     }; 


     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); 
     var content = new FormUrlEncodedContent(values); 
     var response = await client.PostAsync("https://accounts.google.com/o/oauth2/token", content); 
     var responseString = await response.Content.ReadAsStringAsync(); 
     var value = Json(new { data = responseString }); 
     return value; 
    } 

} 

をしかし、私はこれを実行すると、私はエラーメッセージが表示されますこれを得る。私を助けることができる人?

+0

どのようなコード変数の値ですか? (通常は 'password'に設定されている 'grant_type'パラメータを表します) – user1821052

+0

@ user1821052:エラーメッセージを確認してください。 grant_typeの後にコードがあります。 – Bryan

+0

私は、 "コード"と "grant_type"の両方に可変コードを設定しているようです。文字列 'password'に「grant_type」を設定してみてください – user1821052

答えて

0

あなたが提供したリンクでは、はauthorization_codeに設定する必要があります。私はこれが混乱しているのを見ることができます(おそらくそれはコードの価値であるべきですか?)しかし、後の例ではであり、 'authorization_code'の文字列リテラルであることが明らかになりました。

A sample request is displayed below: 

POST /o/oauth2/token HTTP/1.1 
Host: accounts.google.com 
Content-Type: application/x-www-form-urlencoded 

code=4/ux5gNj-_mIu4DOD_gNZdjX9EtOFf& 
client_id=1084945748469-eg34imk572gdhu83gj5p0an9fut6urp5.apps.googleusercontent.com& 
client_secret=hDBmMRhz7eJRsM9Z2q1oFBSe& 
redirect_uri=http://localhost/oauth2callback& 
**grant_type=authorization_code** 

はおそらくより興味深いことに、grant_typeはOAuth 2.0のための標準であり、シナリオに応じて特定の値に制限されます。あなたのシナリオでは、認証コードの助成金は、仕様のこのセクションで説明されていますhttps://tools.ietf.org/html/rfc6749#section-4.1

ドキュメントから:

grant_type REQUIRED。値は "authorization_code"に設定されなければならない。

関連する問題