我在示例 Java 代码中看到,当请求刷新令牌时,可以添加范围:
credential.createScoped(Arrays.asList("someapi")).refreshToken
我在 Python 中也看到了同样的情况。但 cli 中没有范围的配置选项。
gcloud auth application-default print-access-token
没有
gcloud auth --scopes="someapi" application-default print-access-token
您知道如何在 cli 中为自定义范围设置访问密钥吗?
在 API 中,如
gcloud auth print-access-token
命令中一样,如果您在用户帐户上设置范围,则会失败。只能对服务帐户进行范围限制,而不能对用户帐户进行范围限制。
事实上,您可以像这样在用户帐户凭据上设置范围
gcloud auth application-default login --scopes=...
然后,当您生成令牌时,它将自动正确确定范围。
请记住,您特别需要限制凭证的范围以访问非 Google Cloud API(工作区、地图、Youtube...)
我相信通过
gcloud auth application-default print-access-token
命令请求自定义范围在设计上不可用。
原因是您可以使用用户帐户或服务帐户登录 Google Cloud SDK。如果您使用
gcloud auth application-default login
登录用户帐户,Cloud SDK 仅请求完全访问 GCP API 的范围。
因此,当您运行
gcloud auth application-default print-access-token
时,Google Cloud SDK 无法通过您登录的帐户访问 GCP 之外的任何 API,因此它无法打印具有自定义范围的访问令牌。
以下工具可帮助获取与 API 配合使用的 Bearer 令牌:
oauth2l header --json PATH_TO_SERVICE_ACCOUNT_KEY businesscommunications
[
brew install oauth2l
或 https://github.com/google/oauth2l ]
您可以使用 --scopes 标志来完成此操作。它不在帮助中,但它有效。 该命令看起来像
gcloud auth print-access-token [email protected] --scopes='https://www.googleapis.com/auth/travelpartner'