使用Python调用Gmail API时认证失败问题求助
Gmail API 认证失败问题解决
问题描述
- 授权时提示:“Google尚未验证此应用,你获得了一个正在测试的应用的访问权限,仅在了解邀请方的情况下继续。”
- 点击继续后报错:“出现错误,抱歉,此处出现问题,请重试。”
- 已尝试关闭两步验证,仍无法解决,相关代码如下:
# import statements SCOPES = ['https://www.googleapis.com/auth/gmail.settings.basic', 'https://www.googleapis.com/auth/gmail.readonly' ] flow = InstalledAppFlow.from_client_secrets_file( r'my_correct_path_to_secret_file' , scopes=['https://www.googleapis.com/auth/gmail.readonly']) creds = flow.run_local_server(port=0) # Save the credentials for the next run with open('token.json', 'w') as token: token.write(creds.to_json()) # Create the Gmail API client gmail_service = build('gmail', 'v1', credentials=creds)
解决步骤
1. 确认OAuth应用的测试用户配置
登录Google Cloud控制台,进入目标项目的「API和服务」→「OAuth同意屏幕」,确保你的Google账号已添加到「测试用户」列表中。未验证的应用仅允许测试用户完成授权,若未添加则点击「添加用户」输入邮箱保存。
2. 校验客户端密钥文件
确认my_correct_path_to_secret_file指向的是从Google Cloud控制台下载的OAuth 2.0客户端ID JSON文件(文件名通常为client_secret_xxxxxx.json),不要使用服务账号密钥文件,二者格式不兼容。
3. 统一权限范围(Scopes)配置
代码中定义了SCOPES数组,但初始化flow时又单独指定了单个权限,导致配置不一致。修改代码统一使用预定义的SCOPES:
flow = InstalledAppFlow.from_client_secrets_file( r'my_correct_path_to_secret_file', scopes=SCOPES )
4. 清除旧认证缓存
删除本地生成的token.json文件,关闭当前浏览器的Google登录会话(或使用无痕模式),重新运行代码触发全新授权流程。
5. 确认Gmail API已启用
在Google Cloud控制台的「API和服务」→「已启用的API和服务」中,检查「Gmail API」是否已启用,若未启用则搜索并启用该API。
内容的提问来源于stack exchange,提问作者dugong-lukong-jikang
相关产品推荐
相关产品推荐

