Google OAuth 2 redirect_uri_mismatchになる

rails
この記事は約2分で読めます。

rails4でomniauth-google-oauth2を使ってソーシャルログイン機能を実装していたところ、以下のエラーでコールバック処理が実行されない。

この時の設定内容は以下のとおり。他のプロバイダのログインも一緒に試していたので、google以外のものも含まれている。

Google Developer Consoleでの設定は以下のとおりで、redirect_uriは一致している。

流れを追ってみると、どうもアクセストークンを要求するリクエストでrequest_uriパラメータの値が、Google Developer Consoleに登録しているものと異なっていることが起因しているようだった。では、この時のrequest_uriはというと以下のようになっている。

色々と調べていたところ、以下のissuesに同じような報告があった。

github.com

どうやらgoogleの場合は、request_uriにこれらのクエリがあると上手くいかないようだ。このrequest_uiを生成しているのは以下の箇所っぽい。query_stringがある場合に上手くいかない。

上のissueでは、クエリrequest_uriの値をomniauthのsetup_phasesetupオプションを使って書き換えているようだった。issueのworkaroundを参考に以下のように書いてみたところ上手くいった。

ちなみに僕の環境は以下のとおり。

  • omniauth-oauth2 (1.4.0)
  • omniauth-google-oauth2 (0.2.8)

参考リンク

コメント

タイトルとURLをコピーしました