通过服务帐户生成AccessToken

时间:2019-04-09 12:58:32

标签: google-cloud-platform google-apis-explorer google-iam

我需要打个电话来访问Google业务中的帐户,但是我没有access_token。我只有服务帐户的json。接下来的麻烦是,如何从服务帐户开始生成访问令牌?

通话:

https://mybusiness.googleapis.com/v4/accounts/{accountName}/locations/{locationName}/reviews

我正在尝试通过其余调用生成访问令牌:

https://iamcredentials.googleapis.com/v1/{name=projects/*/serviceAccounts/*}:generateAccessToken

但这会返回错误:

  

请求缺少必需的身份验证凭据。预期的OAuth 2访问令牌,登录cookie或其他有效的身份验证凭据。

我了解该错误,但这是不合逻辑的。它应该返回一个短期令牌而没有身份验证凭据,因为我已经有一个关联的服务帐户。

致谢

1 个答案:

答案 0 :(得分:0)

您误解了API generateAccessToken的功能以及如何调用它。

要调用此API,您已经需要根据用户或服务帐户凭据生成的访问令牌。您可以使用gcloud创建访问令牌:gcloud auth application-default print-access-token。然后在Authorization: bearer HTTP标头中包含访问令牌。

您还需要在API调用中命名的服务帐户具有iam.serviceAccounts.getAccessToken IAM权限。可以使用gcloud iam service-accounts add-iam-policy-binding和选项--role=roles/iam.serviceAccountTokenCreator授予权限来授予此权限。

满足上述要求后,您可以调用此API以使用指定的服务帐户创建新的访问令牌。基本上,您使用一个访问令牌来创建另一个更改身份的访问令牌。