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

调用Gmail API出现Google OAuth 2.0 redirect_uri_mismatch错误如何解决

错误原因
  • 客户端类型与授权流程不匹配:你在Google Cloud控制台创建的是Web应用类型的OAuth 2.0客户端ID,但代码中使用的InstalledAppFlow是专为桌面端、移动端这类本地安装类应用设计的授权流程,二者规则不兼容。
  • 回调地址校验不通过:InstalledAppFlow.run_local_server()默认会启动本地临时服务,实际回调地址为http://localhost:<端口号>/,你在Web应用客户端中配置的redirect_uri和这个实际回调地址不完全一致,触发Google OAuth 2.0校验规则报错。
解决方法
  • 方案一(推荐,适配快速入门代码):
    进入Google Cloud控制台的「API和服务→凭据」页面,删除原有Web应用类型的OAuth客户端,重新创建桌面应用类型的OAuth 2.0客户端ID,下载新的凭据文件替换本地的creds.json。操作完成后删除本地已生成的token.json文件,重新运行代码即可正常走授权流程。
  • 方案二(保留Web应用类型客户端):
    如果你确实需要使用Web应用类型的客户端,需要做两处调整:
    1. 将代码中的InstalledAppFlow替换为适用于Web服务的Flow类,显式指定和控制台配置完全一致的redirect_uri,示例调整如下:
    from google_auth_oauthlib.flow import Flow
    
    SCOPES = ['https://www.googleapis.com/auth/gmail.readonly']
    # 替换为你自己的redirect_uri,需要和控制台配置完全一致
    REDIRECT_URI = 'http://localhost:8080/'
    
    flow = Flow.from_client_secrets_file(
        'creds.json',
        scopes=SCOPES,
        redirect_uri=REDIRECT_URI
    )
    # 生成授权链接
    auth_url, state = flow.authorization_url(
        access_type='offline',
        include_granted_scopes='true'
    )
    # 后续处理回调逻辑可根据业务需求实现
    
    1. 进入Google Cloud控制台的Web应用客户端配置页面,将你代码中使用的redirect_uri完整添加到「已授权的重定向URI」列表中,确保协议、域名、端口、路径甚至末尾的斜杠都完全一致。
  • 方案三(临时调试用):
    如果你不想修改客户端类型,可在代码中指定固定端口,同时将对应地址添加到Web应用的redirect_uri列表中:
    1. 修改代码中run_local_server的参数,指定固定端口:creds = flow.run_local_server(port=8080)
    2. 进入Web应用客户端配置页面,添加http://localhost:8080/到已授权的重定向URI列表,保存后等待2分钟生效,删除旧的token.json后重新运行代码即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:15:04