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

服务账号服务器到服务器调用Google Admin Reports API报401如何解决

问题解答

你对服务账号的认知是正确的,服务账号属于OAuth 2.0授权体系的一种,完全支持无用户交互的服务器到服务器调用Google Admin Reports API。你遇到的401错误核心原因是开启全域委托的服务账号调用Admin Reports API时,必须模拟一个属于当前Google Workspace组织、拥有报表访问权限的管理员账号,你当前的代码没有指定模拟的用户身份,服务账号以自身身份请求时没有组织内资源的访问权限。

解决方案步骤

  • 首先确认前置配置无误:
    • Google Cloud控制台中你使用的服务账号已开启「全域委托」功能
    • Google Workspace管理后台的全域委派配置中,已正确添加该服务账号的客户端ID,且已绑定了你提到的两个权限scope
    • 准备一个属于当前Workspace组织的账号,该账号已被分配超级管理员权限或「报表查看」相关管理员角色,有权限访问登录审计等报表数据
  • 然后修改你的调用代码,在初始化服务账号凭证时添加subject参数指定要模拟的管理员邮箱,修改后的代码示例如下:
creds = service_account.Credentials.from_service_account_file(
    'credentials.json', 
    scopes=SCOPES,
    subject='你的Workspace管理员邮箱地址@你的域名.com' # 新增这一行
)

with build('admin', 'reports_v1', credentials=creds) as service:
  response = service.activities().list(userKey='all', applicationName='login', maxResults=10).execute()
  • 如果修改后仍然报错,可排查以下场景:
    • 刚配置的全域委托权限存在最长15分钟的缓存延迟,等待后再重试
    • 确认模拟的管理员账号未被冻结、权限未被收回
    • 确认你使用的credentials.json是服务账号的密钥文件,而非其他类型的OAuth凭证

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 15:54:08