google_omniauth2 : redirect_uri_mismatch
错误通常发生在使用 OmniAuth 和 Google OAuth2 进行用户认证时。这个错误提示表明你在 Google API 控制台中配置的重定向 URI 与你的应用程序实际使用的重定向 URI 不匹配。
以下是一些解决这个问题的步骤:
确保你的 Rails 应用程序中配置的重定向 URI 与 Google API 控制台中的一致。
omniauth-google-oauth2
gem如果你使用的是 omniauth-google-oauth2
gem,可以在 config/initializers/omniauth.rb
或 config/initializers/devise.rb
中配置重定向 URI:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], {
redirect_uri: 'http://your-app-domain.com/auth/google_oauth2/callback'
}
end
确保 redirect_uri
与 Google API 控制台中配置的完全一致。
确保你的环境变量中配置的 GOOGLE_CLIENT_ID
和 GOOGLE_CLIENT_SECRET
是正确的,并且与 Google API 控制台中的一致。
有时候,浏览器缓存可能会导致重定向 URI 不匹配的问题。尝试清除浏览器缓存或使用隐身模式进行测试。
如果以上步骤都没有解决问题,尝试在 Google 账户中移除该应用的授权,然后重新授权。
以下是一个完整的示例配置:
# config/initializers/omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], {
redirect_uri: 'http://your-app-domain.com/auth/google_oauth2/callback',
scope: 'email profile',
prompt: 'consent',
image_aspect_ratio: 'square',
image_size: 50
}
end
领取专属 10元无门槛券
手把手带您无忧上云