QA@IT

Google APIのoauth2-cmdline-sample について

3188 PV

Google APIを使ってみようとサンプルをいじっているのですが、質問があります。

今動かそうとしているのは、以下のソースです。
https://code.google.com/p/google-api-java-client/
oauth2-cmdline-sample
というサンプルソースを動かそうとしています。

一応、コンパイルエラーは出ずに実行できるのですが、
結果、「400 Bad Request」となってしまいます。

Google API Console では、「Client ID for installed applications」という種類のアプリにしてます。
リダイレクト先は「http://localhost」となっています。

不思議なのは、一度は正常に動いたのです。ブラウザにGoogleの許可とか拒否とかのページが出て、そこで許可を選択したら、ちゃんとアカウントの情報が取得できたのです。
二回目に実行したら、なぜか400 Bad Requestとなるのです。

どこから手を付ければいいのかよく分からないのですが、アドバイスを頂けないでしょうか?

回答

リダイレクト先は「http://localhost」となっています。

これはどういう意味でしょうか?
このサンプルはコマンドラインアプリケーションでのサンプルでUserinfoを取得できるだけのものの様に見えますが(細かく見てないので違ったらすいません)。
client_secrets.json を編集していませんか?

あとは http://samples.google-api-java-client.googlecode.com/hg/oauth2-cmdline-sample/instructions.html にあるようにlogging.propertiesの設定を開発用に変更して
HTTPリクエストの状態を取得し、Bad Requestをどのサーバーが返しているのかを調べるといいんじゃないでしょうか。

編集 履歴 (0)
  • アプリケーションを登録する時に、設定する必要があるのです。Google API Consoleでアプリケーションを登録する際に、「installed applications」にしたのですが、なぜかリダイレクト先を設定する項目があります。私はWebサイトを持ってませんので、localhostを設定しました。
    -
  • あ、「これはどういう意味でしょうか?」についての回答したつもりです。すみません。 -
  • client_secrets.jsonは編集しています。クライアントIDなどを入れる必要があるためです。タグなどは変更していません。 -
  • ちょっと帰らないと確認できないですが、私が試した時はリダイレクト先を入れるものがなかった気がします。jsonはAPI Consoleに自分のclient_secrets.jsonダウンロードするリンクがあってそこからダウンロードしたものをサンプルのものと置き換えて使っています(ファイルの置き換えのみで編集はしてません)。 -
  • Redirect URIsはAPI Accessのページで確かに表示されてますね(作成するときに特に指定はしなかったですがhttp://localhostになってます)、失礼しました。 -
  • 間違って新しく回答を起こしてしまいました。そちらを参照してください。 -

Google API ConsoleでAPI Accessを開き、作成したClient ID for installed applicationsの詳細が表示されている右側にDownload JSONというリンクがあります。それをクリックするとclient_secrets.jsonがダウンロードできますのでそれをそのまま使用してみてください。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。