You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby on Rails+Devise集成Google OAuth2遇redirect_uri_mismatch错误求助

解决OmniAuth-Google-OAuth2 + Devise的redirect_uri_mismatch问题

我之前也踩过这个坑,给你梳理几个关键排查步骤,应该能解决你的问题:

1. 先确认Google Cloud Console的配置是否完全匹配

  • 首先要确保你修改的是正确的OAuth客户端ID:有时候我们会在Google Cloud里创建多个项目或者多个客户端ID,不小心改到了别的项目里,等于白忙活。
  • 授权重定向URI必须和请求的完全一致:你请求的是http://localhost:3000/users/auth/google_oauth2/callback,那Google面板里添加的URI就得一模一样——不能改成https,也不能加尾部斜杠,多一个字符都不行。
  • 别搞混客户端类型:本地Web测试的话,应该选「Web应用」类型的客户端ID,而不是「桌面应用」或者「Android/iOS」,这两类的URI规则不一样。

2. 检查Rails项目里的OmniAuth配置

  • 打开config/initializers/devise.rb,看看有没有手动设置redirect_uri参数:如果有类似下面的错误写法,赶紧把redirect_uri: 'xxx'删掉,让OmniAuth自动生成符合当前环境的回调地址,或者改成和Google面板一致的地址。
    # 错误示例(不要这么写)
    config.omniauth :google_oauth2, ENV['GOOGLE_CLIENT_ID'], ENV['GOOGLE_CLIENT_SECRET'], redirect_uri: 'https://localhost:3000/xxx'
    
    # 正确示例
    config.omniauth :google_oauth2, 
      ENV['GOOGLE_CLIENT_ID'], 
      ENV['GOOGLE_CLIENT_SECRET'],
      scope: 'email,profile',
      prompt: 'select_account'
    
  • 一定要重启Rails服务器!很多时候改了配置没重启,服务器还是用旧的缓存配置,这就是你改了Google面板路径但网站请求还是老地址的核心原因——服务器没刷新!

3. 清除浏览器缓存和OAuth会话

浏览器有时候会缓存之前的OAuth授权会话信息,导致请求还是用旧的redirect_uri。你可以:

  • 打开浏览器的隐私模式(Incognito)测试,避免缓存影响
  • 或者直接清除当前域名的Cookie和缓存

4. 排查本地SSL/代理影响

如果你之前给本地Rails开启了SSL(比如用了rails ssl:install),那要确保:

  • 启动服务器时用SSL模式:rails s -b 'ssl://localhost:3000?key=localhost.key&cert=localhost.crt'
  • Google面板里的重定向URI也要改成https://localhost:3000/users/auth/google_oauth2/callback
  • 如果你用了ngrok之类的本地代理工具,那要把代理后的地址(比如https://xxxx.ngrok.io/users/auth/google_oauth2/callback)添加到Google面板的授权URI里,同时确保Rails的config.hosts允许这个域名。

最后再验证一遍

  1. 打开Google Cloud Console,找到对应的OAuth客户端ID,确认授权URI和你请求的地址完全一致
  2. 重启Rails服务器
  3. 用隐私模式打开网站,测试Google登录

如果还是不行,可以检查一下Rails的日志(log/development.log),看看实际生成的redirect_uri到底是什么,和你看到的请求地址是否一致,这样能快速定位是不是配置哪里出了问题。

内容的提问来源于stack exchange,提问作者Kamil Siwek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:12:39