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

.NET 5 Core API中运行超1年的Google Calendar v3突然失效原因问询

Google Calendar v3 API .NET 对接故障排查方案

常见故障原因

  • 服务账号权限变更
    Google Workspace 近期对服务账号域委派策略的校验更加严格,可能存在以下权限问题:
    1. 你使用的服务账号的域-wide 委派权限被管理员撤销,或授予的 Scope 列表被调整,不再包含你用到的日历相关权限
    2. 代码中 CreateWithUser 传入的是服务账号自身邮箱,如果要访问 user@domain.com 的日历,若未开启域委派,需要将服务账号单独加入该日历的共享列表;若已开启域委派,此处应该传入你要模拟的普通Workspace用户邮箱(即user@domain.com)而非服务账号邮箱
    3. Google Cloud 控制台中 Google Calendar API 被意外禁用,或接口请求配额已耗尽
  • 凭证过期问题
    服务账号密钥默认支持设置有效期,最长为2年,若你当初创建密钥时设置的是1年有效期,刚好符合你稳定运行1年后失效的特征,可进入Google Cloud控制台「IAM > 服务账号 > 密钥」页面,确认当前使用的密钥未过期、未被禁用。
  • API 规则更新兼容问题
    2024年以来Google Calendar API对请求参数的校验规则收紧:
    1. 你同时使用了OAuth2服务账号授权和Key = "API_KEY"参数,二者混用会触发权限校验冲突,OAuth授权场景下无需额外传入API密钥
    2. TimeMin、TimeMax参数现在要求明确为UTC时间,你当前传入的DateTime.Now是本地时间,无明确时区标识,会被接口拒绝
  • 底层运行环境问题
    .NET 5 已停止官方支持,若服务器近期有系统更新,可能导致默认TLS版本低于1.2,而Google API当前强制要求所有请求使用TLS 1.2及以上版本,你可以在代码初始化阶段添加配置强制指定TLS版本:
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13;
    
    另外GoogleCredential、CalendarService构建阶段不会发起网络请求,只有第一次执行接口调用时才会请求OAuth接口获取Access Token,因此构建无报错不代表凭证有效。

优先级最高的排查步骤

  • 捕获接口请求的完整错误信息:在执行ListRequest的Execute()/ExecuteAsync()方法时添加try-catch,捕获Google.GoogleApiException,读取异常内的Error.Code和Error.Message字段,可直接定位错误类型(401代表凭证无效、403代表权限不足、429代表配额超限等)
  • 移除ListRequest中的Key = "API_KEY"参数,同时将TimeMin、TimeMax修改为UTC时间后重试
  • 进入Google Workspace管理后台,确认服务账号的Client ID仍被授予了Calendar、CalendarEvents、CalendarEventsReadonly三个Scope的访问权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:57:02