2017-03-16 7 views
2

「OAuth 2.0 for Web Serverアプリケーションの使用」ヘルプページを段階的に追っていくうちに404エラーが発生します。 Using OAuth 2.0 for Web Server ApplicationsGoogle APIレスト:更新とアクセストークンのExchange認証コード - エラー404

私はhttp/restリクエストを使用します。

手順5:「更新トークンとアクセストークンの交換認証コード」までは問題ありません。

私のリクエスト(POSTまたはGET)は、404エラー:「見つかりません」を返します。ここ は、ガイドと同様に、私の要求である:ここでは

https://www.googleapis.com/oauth2/v4/token? 
code=4/_XXXXXXXXXXXXXXXXXXX__XXXXXXXXXXXXXX-XXXXXX?&client_id=-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.apps.googleusercontent.com&client_secret=XXXXXXXXXXXXXXXXXXX_XXXX&grant_type=authorization_code&redirect_uri=http%3a%2f%2fwww.mydomain.com%3a50000%2fMyPage 

はガイドの関連部分です:

"To exchange an authorization code for an access token, call the https://www.googleapis.com/oauth2/v4/token endpoint and set the following parameters:

Fields

code The authorization code returned from the initial request.

client_id The client ID obtained from the API Console.

client_secret The client secret obtained from the API Console.

redirect_uri One of the redirect URIs listed for your project in the API Console.

grant_type As defined in the OAuth 2.0 specification, this field must contain a value of authorization_code."

私は、サービスのURLに問題があると思います。私が間違っている?

いずれも有効なURLを提供できますか?

答えて

2

作業要求があること

POST /oauth2/v4/token HTTP/1.1 
Host: www.googleapis.com 
Content-length: 233 
content-type: application/x-www-form-urlencoded 
user-agent: google-oauth-playground 
code=4%2FKxoYTS-jeq5-d6Lv7YvSz9ZrK0pJ_5lZsMExzNC1M0o&redirect_uri=https%3A%2F%2Fdevelopers.google.com%2Foauthplayground&client_id=407408718192.apps.googleusercontent.com&client_secret=************&scope=&grant_type=authorization_code 

注だろうに役立つかもしれないGoogle 3 Legged OAuth2 Flowの私のチュートリアルです: - code=などが要求体であるので、それはPOSTです

  1. 、URLではありません。
  2. 投稿のため、コンテンツタイプのヘッダーが正しいことを確認してください。 "application/x-www-form-urlencoded"
  3. アクセスコードに英数字以外の文字が含まれている場合、 2番目の文字の「/」は、URLでエンコードする必要があります。これはよくあなたが使っているhttpライブラリ(例えば、jquery、Angular $ httpなど)によって行われます。ワイヤが正しく処理されているかどうかを確認してください。
  4. 私は認証コードに疑問符が含まれていることは間違いありません。それが行われている場合のみ、URLエンコードされている必要があります。
+0

認可コードには疑問符が含まれていますが、あなたは正しいです:はい、私のコードでURLエンコーディングに問題がありました(私はURLエンコードされた変数を使用しませんでした!)私のコードでは明らかでしたが、誤った道に焦点を当てる。 – Rikou

1

認証フローのステップ2は、HTTP POSTです。

https://www.googleapis.com/oauth2/v4/token 
code={The code from step one}&client_id={ClientId}&client_secret={ClientSecret}&redirect_uri={RedirectURI}&grant_type=authorization_code 

私が見る主な違いは、あなたが必要とされていないURLの末尾にタック?を持っているということです。文字列として&の文字列を表示したときとまったく同じ文字列を投稿する必要があることを覚えておいてください。

これは、それが

+0

私はGETとPOSTを試してみて、同じことをしました。 '?' charはgoogleから受け取ったコード文字列の一部です。 私はそれに気づき、それを削除しようとしましたが、まだ404エラーがありました。 私はコード文字列の一部だったので私はそれを残しました。 2分前に回避策のソリューションを構築しましたが、それは満足のいくものではありません.Net Client用にREST APIとGoogle APIが混在しています。 私はあなたのチュートリアルを見て、私はそれがコードの%$!£¨#@%を改善すると確信しています。 ありがとう。 – Rikou

+0

Google .Netクライアントライブラリを使って始めてみませんか?なぜこれを手動でやろうとしていますか?認証フローの最初の部分は、あなたにURLを返すべきではありませんか?認証コードを返すだけです。どのように見えるのですか4/X9lG6uWd8-MMJPElWggHZRzyFKtp.QubAT_P-GEwePvB8fYmgkJzntDnaiAIあなたはタイトルからそれを切り出して、それをつかんでいると思われますか?あなたはコードをつかむだけですべきではありません。 – DaImTo

+0

私の環境は複雑で、完全な.Netではありません。このプロジェクトは主にASP.Net WebFormの「Webサイト」で、古典的なASP VB Scriptの古いページと混在しています。 REST APIを使用するのはとてもシンプルなようでしたが、この問題の1つです。 – Rikou

関連する問題