调用 Google IAM generateAccessToken API 总是 returns 错误
Calling Google IAM generateAccessToken API always returns error
我面临无法使用此 method 为 Google IAM 服务帐户生成访问令牌的问题。
我使用以下方法获得了个人 OAuth2 访问令牌:
gcloud auth application-default print-access-token
我已经获得了所有必要的角色 (roles/iam.serviceAccountTokenCreator
),但是当我 cURL API 时,我总是收到错误响应:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
完整的 curl 请求是这样的:
curl -X POST --header 'Content-Type: application/json' --header 'authorization: Bearer ya29.AASDSADASDASDi9C1yAXXXXXXZzLtDDrCAzblqF_qi5sKvMZcHieBADASDASDTNJiOKrqJBffb4Moh3gTgiTbDgMIF1XDQU5JZ31aACs0aUbI4wgeqV2Q' https://iamcredentials.googleapis.com/v1/projects/<PROJECT_NAME>/serviceAccounts/<SA_NAME>@<PROJECT_NAME>.iam.gserviceaccount.com:generateAccessToken -d '{"scope": ["https://www.googleapis.com/auth/cloud-platform"]}'
谢谢
您的 API 调用有两个问题。
- 服务帐户名称是一个路径参数,必须进行 URL 编码。
@
字符无效。使用 %40
代替(作为正确编码的示例)。
- URI 指定
PROJECT_NAME
。这是不正确的。您需要使用 -
(hyphen/dash 字符)。示例 projects/-/serviceAccounts
.
您还需要将权限 iam.serviceAccounts.getAccessToken
附加到分配给创建此 API 请求中使用的请求访问令牌的帐户的角色之一。如果不正确,这将导致不同的错误。进入下一步时的提示。
我面临无法使用此 method 为 Google IAM 服务帐户生成访问令牌的问题。
我使用以下方法获得了个人 OAuth2 访问令牌:
gcloud auth application-default print-access-token
我已经获得了所有必要的角色 (roles/iam.serviceAccountTokenCreator
),但是当我 cURL API 时,我总是收到错误响应:
{
"error": {
"code": 400,
"message": "Request contains an invalid argument.",
"status": "INVALID_ARGUMENT"
}
}
完整的 curl 请求是这样的:
curl -X POST --header 'Content-Type: application/json' --header 'authorization: Bearer ya29.AASDSADASDASDi9C1yAXXXXXXZzLtDDrCAzblqF_qi5sKvMZcHieBADASDASDTNJiOKrqJBffb4Moh3gTgiTbDgMIF1XDQU5JZ31aACs0aUbI4wgeqV2Q' https://iamcredentials.googleapis.com/v1/projects/<PROJECT_NAME>/serviceAccounts/<SA_NAME>@<PROJECT_NAME>.iam.gserviceaccount.com:generateAccessToken -d '{"scope": ["https://www.googleapis.com/auth/cloud-platform"]}'
谢谢
您的 API 调用有两个问题。
- 服务帐户名称是一个路径参数,必须进行 URL 编码。
@
字符无效。使用%40
代替(作为正确编码的示例)。 - URI 指定
PROJECT_NAME
。这是不正确的。您需要使用-
(hyphen/dash 字符)。示例projects/-/serviceAccounts
.
您还需要将权限 iam.serviceAccounts.getAccessToken
附加到分配给创建此 API 请求中使用的请求访问令牌的帐户的角色之一。如果不正确,这将导致不同的错误。进入下一步时的提示。