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

Google OAuth登录遇redirect_uri_mismatch错误的原因及解决方法

Google OAuth "redirect_uri_mismatch" 错误:原因与解决办法

核心原因

这个错误的本质是:你的Flask应用向Google OAuth服务发送的回调URI,和你在Google Cloud控制台中配置的授权重定向URI完全不一致,Google出于安全策略会直接拒绝该请求。

具体排查与修复步骤

1. 先确认代码实际生成的回调URI

本地启动Flask应用后,访问/google-login路由,先搞清楚代码生成的回调URI到底是什么。可以临时在google_login函数里加一行打印:

@accounts_bp.route('/google-login')
def google_login():
    callback = url_for(
        'accounts_bp.authorized',
        _external=True,
        next=request.args.get('next') or request.referrer or None
    )
    print("生成的回调URI:", callback)  # 临时打印,测试完成后可删除
    return google.authorize(callback=callback)

启动应用后查看控制台输出的完整URI,这就是你需要在Google控制台配置的精确地址。

2. 核对Google Cloud控制台的重定向URI配置

登录Google Cloud控制台,找到你的OAuth 2.0客户端ID配置页,确保:

  • 配置的URI和代码生成的完全一致:包括协议(http/https)、域名、端口、路径,一个字符都不能错
    • 本地测试必须用http://localhost:端口号/authorized(比如http://localhost:5000/authorized),别用127.0.0.1(除非你全程用这个域名访问应用)
    • 如果你的accounts_bp设置了路由前缀(比如url_prefix='/accounts'),回调URI会变成http://localhost:5000/accounts/authorized,必须把这个完整路径加进配置
  • 本地测试和线上环境的URI要分开添加,都列在重定向URI列表里
  • 不要带任何查询参数(比如?next=xxx),Google不允许配置带参数的重定向URI

3. 修正代码中next参数的处理方式

你的代码里把next参数拼进了回调URI,这会导致生成的URI带查询参数,和Google配置的纯路径URI不匹配。可以改成先把next暂存到session里,授权成功后再跳转:

@accounts_bp.route('/google-login')
def google_login():
    # 把next参数暂存到session
    session['next_target'] = request.args.get('next') or request.referrer or None
    # 生成不带参数的回调URI
    callback = url_for('accounts_bp.authorized', _external=True)
    return google.authorize(callback=callback)

@accounts_bp.route('/authorized')
def authorized():
    resp = google.authorized_response()
    # ... 省略中间的用户验证、创建逻辑 ...
    # 授权成功后读取session里的next参数跳转
    target_url = session.pop('next_target', url_for('dashboard_bp.app_home'))
    return redirect(target_url)

4. 检查Flask运行配置

  • 确保本地启动Flask的端口和配置的一致:比如用flask run --port=8080启动,回调URI的端口就是8080,必须对应到Google的配置里
  • 不要用app.run(host='0.0.0.0')然后用局域网IP访问应用,否则生成的回调URI会是那个IP,而Google配置里只有localhost,必然不匹配

5. 等待配置生效

修改Google控制台的重定向URI后,可能需要等待1-2分钟让配置同步,之后再测试登录流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:20:22