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

生产环境Google OAuth2 redirect_uri不匹配错误,本地运行正常

解决Google OAuth2生产环境invalid redirect_url错误

问题核心

本地运行时,Google Drive令牌交换流程正常,但部署到服务器后触发invalid redirect_url错误,核心原因是代码中硬编码的重定向地址与生产环境不匹配,且未在Google OAuth配置中注册生产环境的重定向URI。

原因分析

  1. OAuth2授权码流程要求:获取授权码时使用的redirect_uri和交换令牌时使用的redirect_uri必须完全一致,且该URI必须在Google Cloud Console的OAuth客户端配置中提前注册。
  2. 代码中REDIRECT_URL硬编码为http://localhost:3000,仅适用于本地开发;生产环境前端的实际域名(如https://your-production-domain.com)与该地址不匹配,导致Google验证失败。

解决方案

1. 动态配置重定向地址,避免硬编码

将固定的localhost地址改为通过环境变量配置,适配不同运行环境:

import os

# 本地开发用默认值,生产环境通过环境变量传入实际地址
REDIRECT_URL = os.getenv("GOOGLE_OAUTH_REDIRECT_URI", "http://localhost:3000")

生产环境部署时,设置环境变量为前端实际的回调地址(如https://your-app.com/google-drive-callback)。

2. 在Google Cloud Console注册生产环境的重定向URI

  • 登录Google Cloud Console,找到你的OAuth 2.0客户端ID配置页面
  • 在「已授权的重定向URI」列表中,添加生产环境的完整回调地址(必须和代码中使用的地址完全一致,包括HTTP/HTTPS、域名、端口、路径)
  • 保存配置后,等待5-10分钟让配置生效(Google的配置同步存在延迟)

3. 确保授权请求与令牌交换的redirect_uri一致

检查前端发起Google授权请求时使用的redirect_uri,必须和后端交换令牌时的REDIRECT_URL完全相同,不能出现本地地址和生产地址混用的情况。

额外注意点

  • 生产环境必须使用HTTPS(localhost除外),Google OAuth2不允许非HTTPS的生产域名作为重定向地址
  • 调试时可以打印Google返回的错误详情,获取更具体的提示:
    print(token_json)  # 调试完成后记得移除该代码
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 13:48:17