使用 OAuth (Automotive)

如要授权对 annotatePaths 的请求,您需要有关联 Google Cloud 项目的许可名单上的服务帐号。然后,您可以模拟服务帐号并生成 OAuth 令牌,该令牌在请求中作为标头传递。

设置服务账号

由于仅允许许可名单中的服务帐号调用 annotatePaths,因此您必须通过服务帐号模拟充当服务帐号。

  1. 按照创建服务账号中的说明操作。服务帐号电子邮件地址具有以下常规格式:

    SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
    
  2. 向您的 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 小时后过期。)如需了解详情,请参阅为服务帐号创建短期有效凭据。以下步骤是这些说明的简短视图。

  1. 登录 gcloud:

    gcloud auth login
    

    gcloud 会打开一个浏览器窗口,并提示您授予权限。

  2. 设置项目:

    gcloud config set project PROJECT_ID
    
  3. 使用 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 不支持最终用户凭据,请参阅用户凭据无效