我需要打个电话来访问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或其他有效的身份验证凭据。
我了解该错误,但这是不合逻辑的。它应该返回一个短期令牌而没有身份验证凭据,因为我已经有一个关联的服务帐户。
致谢
答案 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以使用指定的服务帐户创建新的访问令牌。基本上,您使用一个访问令牌来创建另一个更改身份的访问令牌。