2011-07-13 15 views
2

GDataとOAuth2.0サーバー側(Check this link)を使用してGoogleデータ(連絡先、プロフィールデータの編集、カレンダー...など)にアクセスしようとしています。最初のコードを取得し、oauth2_tokenを取得するリクエストを投稿しようとすると、私はいつもエラーを受け取りました"リモートサーバーはエラーを返しました:(400)Bad Request。"request.GetResponse()によるoauth2トークンの取得に失敗しました

string clientToken = Request.QueryString["code"]; 


     string post = 
      string.Format(
       @"code={0}&client_id={1}&client_secret={2}&redirect_uri=http://localhost/default.aspx&grant_type=authorization_code", 
       clientToken, Settings.ClientId, Settings.ClientSecret); 

     WebRequest httpRequest = WebRequest.Create("https://accounts.google.com/o/oauth2/token"); 
     httpRequest.Method = "POST"; 
     httpRequest.ContentType = "application/x-www-form-urlencoded"; 

     StreamWriter streamWriter = new StreamWriter(httpRequest.GetRequestStream()); 
     streamWriter.Write(post); 
     streamWriter.Flush(); 
     streamWriter.Close(); 

     var ss = (HttpWebResponse)httpRequest.GetResponse(); 
     Stream stream = ss.GetResponseStream(); 

すべてのヘルプ???:ここ は、私がOAuth2_tokenを返すリクエストをPOSTするために使用するコードです。私は今、それを解決しようとするまでの2日間を過ごしたが、無駄に:(

+0

リダイレクトURIをGoogleに登録しましたか? – dtb

+0

Google APIコンソールでは、http://code.google.com/apis/consoleの意味ですか?はい、私はやった –

答えて

1

それはREDIRECT_URIは?

[https://groups.google.com/forum/#をURIをエンコードする必要があることかもしれません!トピック/のOAuth2-devの/ 9xnn8nUIA2s]

1

私はあなたがHttpUtility.UrlEncodeを使用してREDIRECT_URIパラメータを符号化するべきだと思い

また、あなたがUTF8エンコーディングを使用してリクエストボディをエンコードする必要があります。

byte[] encoded = Encoding.UTF8.GetBytes(post); 
httpRequest.ContentLength = encoded.Length 

これが役に立ちます。

関連する問題