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

调用Google Gmail API发送邮件时遇403权限不足错误求助

解决Gmail API 403权限不足问题的步骤

1. 清理旧凭证缓存

  • 对于依赖token.json的代码:务必删除已生成的token.json文件,重新运行代码并完成授权流程。因为修改权限范围后,旧token会保留之前的权限配置,不会自动更新,这是导致权限不足的最常见原因。
  • 对于使用google.auth.default()的代码:检查环境变量GOOGLE_APPLICATION_CREDENTIALS指向的凭证文件,或系统默认位置的缓存凭证,确保这些凭证的权限范围包含https://mail.google.com/或https://www.googleapis.com/auth/gmail.send。如果用的是服务账号,需确认账号已被授予对应权限。

2. 确认代码权限范围配置

确保两段代码的SCOPES变量包含足够权限:发送邮件最低需要https://www.googleapis.com/auth/gmail.send,https://mail.google.com/为全权限范围,可覆盖所有Gmail操作。注意检查scope URL是否拼写正确。

3. 核对Google API控制台配置

  • 确认OAuth同意屏幕已添加对应权限范围,若为未发布的外部应用,需将测试账号加入测试用户列表,否则会触发权限限制。
  • 验证使用的客户端凭证(如credentials2.json)属于正确的API项目,未混用其他项目的凭证文件。

针对两段代码的具体调整

标签列表代码

若运行仍报错,删除token.json后重新执行,代码会自动启动新的授权流程,生成包含正确权限的新token。

邮件发送代码

该代码使用google.auth.default()自动获取凭证,若出现权限问题,可改用OAuth2授权流程的凭证加载方式,替换原凭证获取逻辑:

# 替换原 creds, _ = google.auth.default(scopes=SCOPES) 代码
from google.oauth2.credentials import Credentials
creds = Credentials.from_authorized_user_file('token.json', SCOPES)

这样能确保使用的是经过你授权、包含正确权限的用户凭证。

验证当前凭证权限

重新授权后,可添加代码打印当前凭证的权限范围,确认是否包含所需scope:

print(creds.scopes)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:37:05