如何使用Go Google SDK模拟用户?

如何使用Go Google SDK模拟用户?,go,google-cloud-platform,google-admin-sdk,google-reporting-api,Go,Google Cloud Platform,Google Admin Sdk,Google Reporting Api,我有一个用户,我用它来查询。我使用该方法生成令牌并读取凭据 虽然,现在我也需要这样做,但我需要使用服务帐户,而不是用户。根据文档,我需要模拟用户,因为不可能使用服务帐户调用API(如果我错了,请纠正我) 这是我模拟用户所做的: impersonatedOption:=选项。ImpersonatedCredentials(“user@project.iam.gserviceaccount.com") CredOption:=option.WithCredentialsFile(“cert.json

我有一个用户,我用它来查询。我使用该方法生成令牌并读取凭据

虽然,现在我也需要这样做,但我需要使用服务帐户,而不是用户。根据文档,我需要模拟用户,因为不可能使用服务帐户调用API(如果我错了,请纠正我)

这是我模拟用户所做的:

impersonatedOption:=选项。ImpersonatedCredentials(“user@project.iam.gserviceaccount.com")
CredOption:=option.WithCredentialsFile(“cert.json”)
scopesOption:=option.WithScopes(admin.AdminReportsAuditReadonlyScope)
httpClient,\uUx,err:=transport.NewHTTPClient(ctx、scopesOption、CredOption、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: 
{
“错误”:{
“代码”:403,
“消息”:“请求的身份验证作用域不足。”,
“状态”:“权限被拒绝”
}
}

服务帐户配置为超级管理员,应该具有所有权限。

我只需要加载证书,并将
主题设置为能够模拟用户:

config,err:=google.JWTConfigFromJSON(b,范围…)
config.Subject=“模拟_user@email.com"

服务帐户模拟的对象似乎是服务帐户,而不是用户或管理员。此外,使用的服务帐户需要具有域范围的委派才能模拟域中的用户(email@domain.com)并且服务帐户已启用了域范围的委派(其中包含
AdminReportsAuditReadonlyScope
角色)。尽管在域范围的委派设置中,ID指的是服务帐户,但这是否正确?