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

Google多范围验证完成后,Calendar权限仍提示未验证问题求助

Google Calendar API调用出现「Google hasn't verified this app」错误排查

问题描述

我已完成Google应用的登录、Gmail及Calendar多范围验证,登录和Gmail权限可正常使用,但调用Calendar API时出现「Google hasn't verified this app」错误。

已确认以下事项:

  • 登录、Gmail及Calendar的API均已完成验证
  • 当前启用的范围及完整范围配置已确认正常(见附图)
  • 应用验证状态已确认无误

调用范围的代码如下:

public function getConsent()
{
    $client = new Google\Client();
    $client->setApplicationName('App name');
    $client->setScopes(Google\Service\Calendar::CALENDAR);
    $client->setAuthConfig('json-file');
    $client->setAccessType('offline');
    $client->setRedirectUri('https://web.com/calendario/google/callback');
    $client->setPrompt('select_account consent');
    $authUrl = $client->createAuthUrl();

    return  redirect()->to($authUrl);
}

请问是否遗漏了验证流程中的步骤,或是需要为Calendar单独创建API凭证?


可能的原因及排查步骤

1. 确认Calendar权限范围的验证状态

虽然你提到已完成多范围验证,但需重点确认https://www.googleapis.com/auth/calendar这个具体范围是否在Google Cloud Console的OAuth consent screen中已提交并通过验证:

  • 进入Google Cloud Console → 目标项目 → APIs & Services → OAuth consent screen
  • 检查「Scopes for Google APIs」列表,确认Calendar相关范围(即代码中CALENDAR对应的全权限范围)已被包含在已验证范围内
  • 若该范围是后续新增的,必须重新提交验证请求——新增敏感/受限范围后,原验证结果不会自动覆盖新范围,需重新完成审核

2. 检查API凭证的关联配置

不需要为Calendar单独创建API凭证,但要确认当前使用的JSON凭证对应的OAuth 2.0客户端ID,是否正确关联了已验证的OAuth consent screen:

  • 进入Google Cloud Console → 目标项目 → APIs & Services → Credentials
  • 找到你使用的OAuth 2.0客户端ID,查看其关联的「OAuth consent screen」是否为已验证的配置(注意区分内部/外部用户类型)
  • 若客户端ID是在验证完成后创建的,需确保它使用的是已通过验证的同意屏幕模板

3. 确认应用的发布状态

如果你的应用面向外部用户(允许非组织内用户使用),必须将OAuth consent screen设置为「发布」状态:

  • 在OAuth consent screen页面,检查「Publishing status」是否为「Published」
  • 若处于「Testing」状态,仅添加到测试用户列表的账号能正常使用,其他用户会触发未验证提示

4. 排查范围调用的匹配性

代码中使用的Google\Service\Calendar::CALENDAR对应全权限范围https://www.googleapis.com/auth/calendar,属于受限范围,需确保:

  • 验证时提交的应用场景说明,明确包含了该全权限范围的使用用途,且审核通过
  • 若之前仅验证了更窄的Calendar范围(如calendar.readonly),现在调用全权限范围会触发未验证提示,需重新提交该范围的验证

5. 清除缓存或刷新授权

部分情况下,浏览器缓存或旧授权令牌会导致提示残留:

  • 让测试用户清除浏览器缓存,或使用隐身模式重新发起授权流程
  • 调用$client->revokeToken()撤销旧令牌后,重新获取新的授权令牌

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:52:51