如何用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
相关产品推荐
相关产品推荐

