【发布时间】:2021-09-29 03:25:03
【问题描述】:
我正在尝试实现 iamcredentials Go API 客户端以生成 Access Token 以通过 REST API 访问某些 Google API,我正在使用此代码
package main
import (
"context"
"log"
"google.golang.org/api/iamcredentials/v1"
)
func main() {
iamcredentialsService, err := iamcredentials.NewService(context.Background())
if err != nil {
log.Println("error initialize iamcredential Service ", err)
return
}
accessTokenCall := iamcredentialsService.Projects.ServiceAccounts.GenerateAccessToken(
"projects/-/serviceAccounts/some-sa@some-project-id.iam.gserviceaccount.com:generateAccessToken",
&iamcredentials.GenerateAccessTokenRequest{
Scope: []string{
iamcredentials.CloudPlatformScope,
},
},
)
iamResp, err := accessTokenCall.Do()
if err != nil {
log.Println("error generate access token", err)
return
}
log.Println(iamResp)
}
但是当我尝试运行上面的 sn-p 时,我得到了这个消息
go run main.go
error generate access token googleapi: Error 400: Request contains an invalid argument., badRequest
有没有办法检查是哪一个导致了上述响应?我不确定,因为没有任何好的实施示例。任何帮助将不胜感激,谢谢。
注意事项:
- 我已经检查了有关此主题https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials 和此https://pkg.go.dev/google.golang.org/api/iamcredentials/v1#pkg-overview 的以下文档
- 我已经在 IAM 上使用
Service Account Token Creator角色设置了服务帐户,并且还从控制台启用了 IAM API - 我还按照建议将
GOOGLE_APPLICATION_CREDENTIALS添加到环境变量中
【问题讨论】:
-
"projects/-/serviceAccounts/some-sa@some-project-id.iam.gserviceaccount.com:generateAccessToken",你确定你的信息正确吗? -
我似乎错误地使用了基于 HTTP 端点示例的名称:D,现在问题已经使用 @guillaume-blaquiere 的解决方案解决了,谢谢您的帮助。
标签: go google-cloud-platform google-oauth access-token