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

已注册重定向URI仍遇Gmail API OAuth2 Error 400: redirect_uri_mismatch

解决Gmail API OAuth2的redirect_uri_mismatch错误

下面是针对你问题的具体排查和解决方法:

1. 确认Google Cloud控制台的重定向URI配置

  • 进入Google Cloud控制台你的项目,找到「API和服务」→「凭据」
  • 打开你创建的OAuth 2.0客户端ID,检查重定向URI是否包含http://localhost:8080/(桌面应用类型默认使用这个地址)
  • 如果是Web应用类型,确保配置的重定向URI和实际使用的完全一致;如果是桌面应用,必须保留http://localhost:8080/,不可随意修改

2. 检查自定义Create_Service模块的配置

你代码中调用的Create_Service是自定义模块,可能硬编码了重定向URI为http://localhost:8080/。打开Google.py文件,查找是否有类似代码:

flow = InstalledAppFlow.from_client_secrets_file(
    client_secret_file, scopes=scopes
)
# 或指定重定向URI的代码
flow.redirect_uri = "http://localhost:8080/"
  • 如果存在指定redirect_uri的代码,要保证和控制台配置的URI完全匹配
  • 如果没有指定,InstalledAppFlow默认会使用http://localhost:8080/,此时控制台必须配置该URI

3. 删除旧的凭据缓存文件

第一次授权生成的token文件会缓存重定向URI信息,即使后续修改了控制台配置,旧缓存仍会生效:

  • 找到代码运行目录下的token.json(或类似凭据缓存文件,通常和oauthkey.json同目录)
  • 删除该文件后重新运行代码,完成新的授权流程

4. 验证客户端密钥文件正确性

  • 确认你使用的oauthkey.json是修改重定向URI后从控制台重新下载的最新版本,替换掉旧文件
  • 打开oauthkey.json,检查redirect_uris字段是否包含和控制台一致的URI

额外代码问题提醒

你的代码中time.delay("12")是错误用法,应该改为time.sleep(12),且该行位于return send_message之后永远不会执行。同时return语句会导致循环只发送第一封邮件就结束,调整后代码如下:

for mail in mlist:
    message['to'] = mail
    encoded_message = base64.urlsafe_b64encode(message.as_bytes()).decode()
    create_message = {'raw': encoded_message}
    send_message = service.users().messages().send(userId="me", body=create_message).execute()
    print(f'Message Id: {send_message["id"]}')
    time.sleep(12)  # 修正为sleep,移至return前
return send_message  # 循环结束后再返回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 02:20:36