Skip to content

解决“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提供了更简单的解决方案。

解决方案

第一步:添加测试账户(首选方案)

对于仅需个人使用的项目,无需完整验证,直接添加测试账户:

  1. 打开 Google Cloud Console
  2. 进入 API 和服务 → OAuth 同意屏幕
  3. 选择 测试用户 选项卡
  4. 点击 +添加用户 按钮
  5. 输入你(或其他测试用户)的Google账户邮箱
  6. 点击 保存 7️ 重新执行脚本触发授权流程

OAuth测试用户添加界面

注意事项

  • 最新UI中,测试用户位于 Audience(受众群体) 部分
  • 必须使用精确的Google账号邮箱格式(含@gmail.com等后缀)
  • 仅适用于非公开项目或个人测试用途

第二步:发布应用(多账户访问)

当需要向更多用户(如客户)开放访问时:

  1. 同上进入 OAuth 同意屏幕
  2. 点击 发布应用 按钮 3️ 根据要求提供:
    • 隐私政策URL(必需)
    • 服务条款URL(必需)
    • 应用功能的详细描述(推荐)
  3. 确认提交后等待审核(通常24-48小时)

Google Cloud发布应用按钮位置

第三步:重新授权(关键操作)

配置更改后必须重新授权:

  1. 删除旧的token.json文件
  2. 再次运行脚本 3️ 重新登录并授权时会看到新提示:
    plaintext
    Google 未验证此应用
    不过您目前可以继续操作,因为应用正在测试阶段

重要安全警告

即使添加测试用户仍会显示"未验证"警告,但允许选择 继续 → 前往<项目名> 进行访问

原理解析

此错误源于Google API的安全机制:当访问范围涉及用户数据时,系统要求:

  1. 测试模式:用于开发阶段,通过添加测试账户绕过验证
  2. 生产模式:需提供完整审核材料

您的配置属于以下两种情境之一:

替代方案

若项目完全无需用户数据访问:

  1. 使用 服务账户 而非OAuth客户端
python
# 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)
  1. 通过云端项目IAM共享表而非用户账户共享

常见问题

Q:添加测试账户后仍不能访问?
A:① 检查邮箱拼写 ② 重新生成OAuth凭据 ③ 清理浏览器Cookie重试登录

Q:能否跳过所有验证?
A:对于敏感API如Gmail或Drive,生产环境必须验证。Sheets/Scripting类API在测试模式下可缓期

Q:为什么Google更新界面如此频繁?
A:安全策略变化导致UI每6-12月调整,建议关注官方 OAuth说明文档

遵循这些步骤后,您的脚本将与Google API正确交互,不会再遇到验证阻止错误。