【问题标题】:Permissions Cloud Resource Manager API权限 Cloud Resource Manager API
【发布时间】:2016-10-06 05:59:07
【问题描述】:

我正在开发一个应用程序,我需要从我的开发者控制台创建、编辑和删除项目。

我为此使用Cloud Resource Manager API

向 API 发出请求需要 OAuth 2.0,所以我使用 OAuth2.0 server to server(双腿 OAuth 或 2LO)

获得授权令牌后,我向 API 发出创建新项目的请求,但我被告知我没有许可证:The caller has no permissions

但是,如果我请求所有项目的列表,我会得到正确的响应。

我如何获得许可?

我按照所有步骤使用 OAuth 2.0 服务器到服务器并拥有一个 Google 工作帐户,该服务帐户具有所有者角色和域的委派。

谢谢!!

【问题讨论】:

    标签: api google-cloud-platform google-cloud-iam


    【解决方案1】:

    我懒得手动运行 OAuth 认证路径,所以我总是使用旧的gcloud auth print-access-token 技巧。

    我做什么:

    1. 创建服务帐户密钥文件:gcloud iam service-accounts keys create <PATH/TO/YOUR_KEY_FILE>.json --iam-account=<YOUR_SERVICE_ACCOUNT>

    2. 激活该帐户:gcloud auth activate-service-account <YOUR_SERVICE_ACCOUNT> --key-file=<PATH/TO/YOUR_KEY_FILE>.json

    3. 使用您的新项目调用 API:curl -H"Authorization: Bearer $(gcloud auth print-access-token)" -H'content-type:application/json' https://cloudresourcemanager.googleapis.com/v1/projects -d'{"projectId": "<YOUR_PROJECT_ID>", "parent":{"type":"organization","id":"<YOUR_ORG_ID>"}}'

    4. 这将返回一个操作 ID,您可以在完成之前查询该 ID:curl -H"Authorization: Bearer $(gcloud auth print-access-token)" https://cloudresourcemanager.googleapis.com/v1/operations/<OPERATION_ID>

    这就是我通过常规 shell 所做的。您可以通过使用 Google 的身份验证库之一并将环境变量 GOOGLE_APPLICATION_CREDENTIALS 设置为在步骤 1 中选择的路径,将其推断到任何脚本,如 the GCP auth docs 中所述。 Google 的身份验证库会直接为您提供访问令牌。

    要获得更简单的解决方案,您只需将the Cloud Resource Manager client library 用作您的语言即可。您只需下载密钥文件,设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量,客户端将为您完成所有工作。如果您在 GCP(GAE、GCF、GCE、GKE、...)中运行此脚本,则库很可能可以直接从平台获取凭据,甚至无需创建密钥或设置任何 env 变量.

    【讨论】:

      猜你喜欢
      • 2017-02-09
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 2022-10-21
      • 1970-01-01
      • 2016-06-02
      相关资源
      最近更新 更多