【问题标题】:Google Compute Engine: Unable to query API from gcloud terminalGoogle Compute Engine:无法从 gcloud 终端查询 API
【发布时间】:2015-12-09 06:29:09
【问题描述】:

我在我的项目中创建了许多虚拟机,我想从中从 gcloud 终端查询 api。 我在尝试查询任何 API 时收到 401 -“需要登录”错误,即使我已授权/登录到 gcloud 终端。

C:\..\Google\Cloud SDK>gcloud config list
[core]
account = remis.haroon@*****.com
disable_usage_reporting = True
project = <proj-id>
[meta]
active_config = default

C:\..\Google\Cloud SDK>curl https://www.googleapis.com/compute/v1/projects/<proj-id>/aggregated/disks
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Login Required",
    "locationType": "header",
    "location": "Authorization"
   }
  ],
  "code": 401,
  "message": "Login Required"
 }
}

【问题讨论】:

    标签: google-compute-engine google-cloud-platform


    【解决方案1】:

    使用 REST API 时需要携带授权令牌:

    gcloud auth login

    TOKEN=$(gcloud auth print-access-token)

    curl -H "Authorization: Bearer $TOKEN" &lt;url&gt;

    【讨论】:

      【解决方案2】:

      正如错误中提到的:

      "message": "Login Required",
      "locationType": "header",
      "location": "Authorization"
      

      由于您正在对 google api 进行 HTTP API 调用,因此您需要将 OAuth 访问令牌放入 header of your HTTP request

      GET compute/v1/projects/<proj-id>/aggregated/disks HTTP/1.1
      Host: www.googleapis.com
      Authorization: Bearer XXXXXXXXXXXXXXXXXXX
      

      有几种方法可以获取 OAuth 访问令牌。一种简单的方法是通过谷歌的oauthplayground

      1. 选择所需的 API 范围
      2. 点击授权 API 按钮
      3. 点击“兑换代币授权码”
      4. 您将拥有访问令牌以在 curl 请求标头中使用它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-03
        • 2020-09-25
        • 1970-01-01
        • 2017-10-09
        • 1970-01-01
        • 2021-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多