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

配置Google域范围委派后调用Calendar API返回notFound错误

根因

你漏了域范围委派的核心必填步骤:服务账号鉴权时未指定要模拟的域内目标用户。
服务账号本身是独立的技术账号,不属于你的Google Workspace租户下的普通用户,你当前的代码实际是以服务账号自身身份调用Calendar API,这个身份下不存在你要查询的目标日历资源,因此返回notFound错误。
域范围委派的逻辑是管理员授权服务账号「可以模拟域内用户」,但代码里必须显式声明要模拟哪个用户,不会自动根据你请求的日历ID匹配身份。

修复方案

生成服务账号凭证时,通过sub参数传入要模拟的用户邮箱(即你代码中的日历所属人owner_email),同时修正你代码里的两处语法笔误:

  1. 给authorization属性赋值时缺少等号
  2. 调用接口的服务对象名和实例化的对象名不一致
    修改后的可运行代码示例:
google_calendar_service = ::Google::Apis::CalendarV3::CalendarService.new
google_calendar_service.authorization = ::Google::Auth::ServiceAccountCredentials.make_creds(
  json_key_io: File.open(PATH_TO_JSON_FILE),
  scope: MY_SCOPES,
  sub: owner_email # 新增该行,指定要模拟的域内用户身份
)

google_calendar_service.get_event(owner_email, event_id)
校验提示
  • 代码中传入的MY_SCOPES必须和你在Workspace管理后台域委派配置页填写的scopes完全一致,否则会报权限错误
  • 域委派配置最长需要5分钟左右的生效时间,刚配置完立刻测试可能出现偶发权限异常
  • 不需要单独给服务账号共享目标日历,只要域委派配置正确、sub参数传对,服务账号就拥有对应scopes下该用户的日历权限

内容的提问来源于stack exchange,提问作者João Fernandes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 06:09:10