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

Laravel Socialite集成Google+ API重定向丢端口致400错误求助

解决Google OAuth重定向URI丢失端口导致的redirect_uri_mismatch错误

这个问题我之前帮朋友排查过好几次,大概率是应用端生成重定向URI时没正确带上端口,或者反向代理把端口信息弄丢了,咱们一步步拆解原因和解决办法:

可能的原因

  • 应用代码硬写了不带端口的重定向地址:很多开发者图省事直接把重定向URI写死成http://localhost/callback/google,没考虑端口变化,或者用了不正确的方法获取域名(比如只取了hostname没带port)。
  • 反向代理/服务器没传递端口信息:如果用了Nginx、Apache这类反向代理,默认配置可能不会把原始请求的端口传给后端应用,导致应用生成重定向URI时拿不到端口。
  • Google配置缓存延迟:虽然你看到控制台里的配置是对的,但Google的OAuth配置偶尔会有缓存,刚修改的配置可能需要几分钟才会生效。

具体解决办法

1. 修复应用代码里的重定向URI生成逻辑

绝对不要硬写死重定向地址,要用框架提供的动态生成方法,自动带上当前请求的端口:

  • Flask示例:
    # 使用url_for的_external参数,自动生成带端口的完整地址
    redirect_uri = url_for('google_callback', _external=True)
    # 或者直接用request对象获取完整根地址再拼接
    redirect_uri = request.host_url + 'callback/google'
    
  • Django示例:
    # 使用build_absolute_uri方法,自动拼接当前请求的协议、域名和端口
    redirect_uri = request.build_absolute_uri('/callback/google')
    

这样不管你启动时用什么端口,生成的重定向URI都会自动带上正确的端口号。

2. 检查反向代理配置(如果使用了的话)

如果用Nginx做反向代理,需要在配置里添加端口传递的头信息,确保后端应用能拿到原始请求的端口:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://127.0.0.1:8002;
        # 传递主机和端口信息
        proxy_set_header Host $host:$server_port;
        proxy_set_header X-Forwarded-Port $server_port;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

同时,要让应用信任这些反向代理头:

  • Flask:在配置里添加TRUSTED_PROXIES = ['127.0.0.1']
  • Django:在settings.py里设置
    USE_X_FORWARDED_HOST = True
    USE_X_FORWARDED_PORT = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    

3. 刷新Google OAuth配置缓存

打开Google Cloud控制台的OAuth客户端配置页面,确认重定向URI确实是http://localhost:8002/callback/google,然后重新点击保存按钮(哪怕你没修改任何内容),等待5-10分钟让配置生效,有时候Google的缓存会慢半拍。

4. 确认本地服务器启动参数

确保你启动开发服务器时确实指定了8002端口:

  • Flask:flask run --port=8002
  • Django:python manage.py runserver 8002
    如果启动时没指定端口,默认端口会和你配置的重定向URI不匹配,但这个问题里是端口丢失,所以这个是次要检查项,但也别漏了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:34:35