如要授权对 annotatePaths
的请求,您需要有关联 Google Cloud 项目的许可名单上的服务帐号。然后,您可以模拟服务帐号并生成 OAuth 令牌,该令牌在请求中作为标头传递。
设置服务账号
由于仅允许许可名单中的服务帐号调用 annotatePaths
,因此您必须通过服务帐号模拟充当服务帐号。
按照创建服务账号中的说明操作。服务帐号电子邮件地址具有以下常规格式:
SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
向您的 Google 商家代表发送服务帐号电子邮件。您的代表将此服务帐号添加到有权调用
annotatePaths
的许可名单中。
添加可以模拟服务账号的用户
添加有权模拟服务帐号的用户:
gcloud iam service-accounts add-iam-policy-binding \
SERVICE_ACCOUNT \
--member=user:USER_EMAIL \
--role=roles/iam.serviceAccountTokenCreator \
--project=PROJECT_ID
您还可以通过 Cloud Console 添加有权模拟服务帐号的用户。请参阅创建服务帐号。
命令失败时的问题排查
如果此命令失败,请让项目所有者为您运行该命令,或者通过运行以下命令向您授予服务帐号的 roles/iam.serviceAccountAdmin
角色:
gcloud iam service-accounts add-iam-policy-binding \ SERVICE_ACCOUNT \ --member=USER_EMAIL \ --role=roles/iam.serviceAccountAdmin \ --project=PROJECT_ID
生成短期有效的 OAuth 令牌
如果您希望使用 OAuth 令牌设置 annotatePaths
,但没有设置生成令牌的环境,请按照本部分中的步骤通过 gcloud CLI 获取一个短期有效的 OAuth 令牌。(该令牌将在 1 小时后过期。)如需了解详情,请参阅为服务帐号创建短期有效凭据。以下步骤是这些说明的简短视图。
登录 gcloud:
gcloud auth login
gcloud 会打开一个浏览器窗口,并提示您授予权限。
设置项目:
gcloud config set project PROJECT_ID
使用 print-access-token 获取短期有效的访问令牌:
gcloud auth print-access-token
此命令会返回一个令牌。复制令牌,并在以下命令中将其插入 YOUR_ACCESS_TOKEN:
curl -X POST \ https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/SERVICE_ACCOUNT:generateAccessToken \ -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{"scope": ["https://www.googleapis.com/auth/cloud-platform"],"lifetime": "3600s"}'
CLI 会返回短期有效的 OAuth 访问令牌,您现在可以使用该令牌向
annotatePaths
发出请求。
(可选)检查 OAuth 令牌权限
如果遇到授权问题,您可以将令牌插入以下网址并自定义 OAUTH_TOKEN,以检查您的 OAuth 令牌权限。(将其粘贴到地址栏中。)
https://oauth2.googleapis.com/tokeninfo?access_token=OAUTH_TOKEN
响应的范围应包含 https://www.googleapis.com/auth/cloud-platform
。如果没有显示,请确保按照上一部分中所示正确设置作用域。
在生产环境中使用 OAuth
如需了解如何在生产环境中使用 OAuth,请参阅 Google 身份验证。
问题排查
如果您的请求返回错误消息,指出此 API 不支持最终用户凭据,请参阅用户凭据无效。