OmniauthでGoogle認証を実装時「uri_mismatch」のエラーが出てしまう(Rails)

実現したいこと

  • 「uri_mismatch」のエラーを解決したい

アプリケーションを作成中の者です。(デプロイ済み)

OmniauthでGoogle認証を実装したのですが、あるユーザーの方からGoogleログイン時にエラーが発生してしまうとの指摘があり、原因が分からず困っています。

イメージ説明

発生している問題・分からないこと

自分の環境では問題なくアクセス→ログインができています。

手持ちの2台目のPCで試したり、ブラウザをいくつか変えてログアウト状態で試したりしましたが、自分の環境ではエラーが発生しません。

また別の友人にもログインを試してもらいましたがエラーは発生しなかったとのことです。

エラーメッセージ

error

1エラー 400: redirect_uri_mismatch

該当のソースコード

Ruby

1```Gemfile2gem "omniauth-google-oauth2"3gem "omniauth-rails_csrf_protection"

devise.rb

1 config.omniauth :twitter, ENV['TWITTER_CONSUMER_KEY'], ENV['TWITTER_CONSUMER_SECRET'], scope: 'email', omniauth_callback: ENV['TWITTER_CALLBACK_URL'] 2 config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], skip_jwt: true 3 OmniAuth.config.logger = Rails.logger if Rails.env.development? # debug用 4

omniauth_callbacks_controller.rb

1class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController 2 def twitter 3 callback_for(:twitter) 4 end 5 6 def google_oauth2 7 callback_for(:google) 8 end 9 10 def callback_for(provider) 11 @omniauth = request.env["omniauth.auth"] 12 info = User.find_oauth(@omniauth) 13 @user = info[:user] 14 if @user.persisted? 15 sign_in_and_redirect @user, event: :authentication 16 set_flash_message(:notice, :success, kind: provider.to_s.capitalize) if is_navigational_format? 17 else 18 @sns = info[:sns] 19 render template: "devise/registrations/new" 20 end 21 end 22 23 def failure 24 redirect_to root_path and return 25 end 26end

sessions/new.html.erb

1<%= button_to user_google_oauth2_omniauth_authorize_path, method: :post, data: { turbo: "false" } do %> 2  ~省略~ 3   Google アカウントでログインする 4<% end %>```

試したこと・調べたこと

上記の詳細・結果

Google Cloudにて、OAuth同意画面やアプリケーションの設定も見直し、IDやKEYに間違いがないことも確認しました。

以上のことから、URLやその他の設定ミスでは無いと考えています。

  • 環境によってURLが書き換えられてしまっているということでしょうか?
  • 何か権限の設定の問題でしょうか?
  • または、その方のアカウントの問題でしょうか?

詳しい方がいらっしゃいましたらアドバイス頂けると嬉しいです。

補足

特になし

コメントを投稿

0 コメント