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

Google OAuth2 redirect_uri异常求助:Python脚本运行失败

解决Google OAuth2 redirect_uri不匹配问题(Python脚本场景)

核心排查与解决步骤

1. 核对脚本与控制台的redirect_uri一致性

直接浏览器访问正常但脚本失败,大概率是脚本内配置的redirect_uri和Google Cloud控制台的配置不严格匹配:

  • 检查Python脚本中初始化OAuth客户端时传入的redirect_uri参数,必须和控制台里的https://local.mysite.com完全一致,包括协议(不能把https写成http)、域名,不能多末尾斜杠或额外路径。
  • 比如脚本里写redirect_uri='https://local.mysite.com/'(多了斜杠),就会触发不匹配错误。

2. 排查MAMP PRO本地站点配置

确认你的https://local.mysite.com本地站点配置无问题:

  • 检查MAMP PRO是否正确将该域名映射到本地服务,HTTPS证书是否被系统信任(避免脚本请求时的SSL验证失败)。
  • 确保脚本里没有硬编码旧端口(比如之前的8000/8080),导致实际请求的redirect_uri带端口,和控制台的无端口配置冲突。

3. 清除OAuth客户端缓存

Python的OAuth库(如google-auth、oauth2client)可能缓存旧配置,导致新redirect_uri未生效:

  • 删除脚本运行目录下的.credentials文件夹(若存在)。
  • 或在脚本中添加cache_discovery=False参数,强制不使用缓存配置,示例代码:
    from google_auth_oauthlib.flow import InstalledAppFlow
    
    flow = InstalledAppFlow.from_client_secrets_file(
        'client_secret.json',
        scopes=['YOUR_REQUIRED_SCOPES'],
        redirect_uri='https://local.mysite.com'
    )
    flow.run_local_server(port=None, cache_discovery=False)
    

4. 确认Google Cloud控制台配置状态

  • 检查控制台中OAuth 2.0客户端ID的redirect_uris列表,确保只有https://local.mysite.com,无残留旧配置(比如之前的localhost:8000)。
  • 配置修改后需等待几分钟生效,控制台更新可能不会实时同步到授权服务器。

5. 调整脚本的授权流程类型

若脚本使用run_local_server()方法,默认会启动本地HTTP服务器并生成带端口的redirect_uri(如http://localhost:8080/),和你配置的域名冲突:

  • 改用手动授权码流程,让脚本跳转到你配置的域名获取授权码,再手动输入到脚本中,示例:
    flow = InstalledAppFlow.from_client_secrets_file(
        'client_secret.json',
        scopes=['YOUR_REQUIRED_SCOPES'],
        redirect_uri='https://local.mysite.com'
    )
    auth_url, _ = flow.authorization_url(prompt='consent')
    print(f"请访问此链接授权:{auth_url}")
    authorization_code = input("输入页面返回的授权码:")
    flow.fetch_token(code=authorization_code)
    credentials = flow.credentials
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:40:28