You need to enable JavaScript to run this app. 如何用Go Google SDK实现用户模拟?服务账号调Reports API报403
优惠活动
大模型
产品
解决方案
定价
更多

如何用Go Google SDK实现用户模拟?服务账号调Reports API报403

服务账号调用Reports API遇到403权限不足问题

前期背景

  • 此前使用普通用户账号查询Reports API,通过google.ConfigFromJSON方法生成令牌、读取凭证完成调用流程。
  • 现需要切换为服务账号实现相同的调用逻辑。根据官方文档说明,服务账号无法直接调用该API,需要模拟域内用户身份发起请求。

实现代码

为完成用户身份模拟,编写的相关代码如下:

impersonatedOption := option.ImpersonateCredentials("user@project.iam.gserviceaccount.com")
credsOption := option.WithCredentialsFile("cert.json")
scopesOption := option.WithScopes(admin.AdminReportsAuditReadonlyScope)

httpClient, _, err := transport.NewHTTPClient(ctx,  scopesOption, credsOption, impersonatedOption)

srv, err := admin.NewService(ctx, option.WithHTTPClient(httpClient))

运行报错

程序运行后调用接口直接失败,报错信息如下:

Get "https://admin.googleapis.com/admin/reports/v1/activity/users/all/applications/login?alt=json&eventName=account_disabled_spamming&prettyPrint=false": impersonate: status code 403

接口返回的错误结构为:

{
  "error": {
    "code": 403,
    "message": "Request had insufficient authentication scopes.",
    "status": "PERMISSION_DENIED"
  }
}

已完成配置:该服务账号已被设置为超级管理员角色,按预期应具备所有接口的访问权限。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 15:24:06