解决“Access blocked: <project> has not completed Google verification”错误
当开发者使用OAuth访问自有API时,常因Google Cloud配置问题引发验证错误
问题描述
开发者在通过脚本操作Google Sheets时,遇到以下错误提示:
Access blocked: <project name> has not completed the Google verification process
这通常发生在以下场景:
- 使用Python或其他语言的脚本访问Google Sheets API
- 创建了Google Cloud项目并启用了相关API
- 配置了桌面应用凭据(OAuth client ID)
- 尝试运行官方提供的API示例代码(如Python Quickstart)
关键矛盾在于:作为开发者,你只需要自己访问API,却被要求完成完整的应用验证流程。实际上,当访问范围仅限于个人或测试账户时,Google提供了更简单的解决方案。
解决方案
第一步:添加测试账户(首选方案)
对于仅需个人使用的项目,无需完整验证,直接添加测试账户:
- 打开 Google Cloud Console
- 进入 API 和服务 → OAuth 同意屏幕
- 选择 测试用户 选项卡
- 点击 +添加用户 按钮
- 输入你(或其他测试用户)的Google账户邮箱
- 点击 保存 7️ 重新执行脚本触发授权流程
注意事项
- 最新UI中,测试用户位于 Audience(受众群体) 部分
- 必须使用精确的Google账号邮箱格式(含
@gmail.com
等后缀) - 仅适用于非公开项目或个人测试用途
第二步:发布应用(多账户访问)
当需要向更多用户(如客户)开放访问时:
- 同上进入 OAuth 同意屏幕
- 点击 发布应用 按钮 3️ 根据要求提供:
- 隐私政策URL(必需)
- 服务条款URL(必需)
- 应用功能的详细描述(推荐)
- 确认提交后等待审核(通常24-48小时)
第三步:重新授权(关键操作)
配置更改后必须重新授权:
- 删除旧的
token.json
文件 - 再次运行脚本 3️ 重新登录并授权时会看到新提示:plaintext
Google 未验证此应用 不过您目前可以继续操作,因为应用正在测试阶段
重要安全警告
即使添加测试用户仍会显示"未验证"警告,但允许选择 继续 → 前往<项目名> 进行访问
原理解析
此错误源于Google API的安全机制:当访问范围涉及用户数据时,系统要求:
- 测试模式:用于开发阶段,通过添加测试账户绕过验证
- 生产模式:需提供完整审核材料
您的配置属于以下两种情境之一:
替代方案
若项目完全无需用户数据访问:
- 使用 服务账户 而非OAuth客户端
# Python示例:服务账户认证
from google.oauth2.service_account import Credentials
SERVICE_ACCOUNT_FILE = 'credentials.json'
SCOPES = ['https://www.googleapis.com/auth/spreadsheets']
creds = Credentials.from_service_account_file(SERVICE_ACCOUNT_FILE, scopes=SCOPES)
- 通过云端项目IAM共享表而非用户账户共享
常见问题
Q:添加测试账户后仍不能访问?
A:① 检查邮箱拼写 ② 重新生成OAuth凭据 ③ 清理浏览器Cookie重试登录
Q:能否跳过所有验证?
A:对于敏感API如Gmail或Drive,生产环境必须验证。Sheets/Scripting类API在测试模式下可缓期
Q:为什么Google更新界面如此频繁?
A:安全策略变化导致UI每6-12月调整,建议关注官方 OAuth说明文档
遵循这些步骤后,您的脚本将与Google API正确交互,不会再遇到验证阻止错误。