Google Cloud,如何获取 API 密钥和我的访问令牌?

piz*_*zza 2 google-authentication google-oauth google-cloud-platform

我是新手。我想在我的本地机器上使用这个 API

https://cloud.google.com/appengine/docs/admin-api/reference/rest/v1/apps.services.versions.instances/list

它适用于带有“尝试此 API”的页面

但是,有没有办法在我的本地机器上使用它?我展开面板,我可以看到 curl 命令

curl \
'https://appengine.googleapis.com/v1/apps/[APPSID]/services/[SERVICESID]/versions/[VERSIONSID]/instances?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --compressed
Run Code Online (Sandbox Code Playgroud)

但是,目前我得到“权限被拒绝”

什么是 [YOUR_API_KEY] 和 [YOUR_ACCESS_TOKEN] ?我如何获得它们?

我是 GCP 的新手,请告诉我步骤并指导我找到适当的参考资料。我已经阅读了一些文档,但我现在无法理解它们。谢谢!

gui*_*ere 7

您不再需要 API 密钥。这是 Google API 的遗留功能,仅提供访问令牌就足够了。

在命令行中你可以这样做

 curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://....
Run Code Online (Sandbox Code Playgroud)

所有 Google Cloud API 均符合访问令牌身份验证。很少有仍然符合 API 密钥的要求。

关于 APIKeys API

该 API 已发布测试版,现已关闭。至少是文档部分。我不知道这个 API 是否稳定或可能会发生变化。您可以为每个 API 创建一个 API 密钥,如下所示(与 Bartosz Pelikan 答案非常相似)

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
   -X POST https://apikeys.googleapis.com/v1/projects/PROJECT_ID/apiKeys
Run Code Online (Sandbox Code Playgroud)

可以看到,我复用了access token认证模式


Bar*_*kan 6

最快的方法是使用 Cloud Shell:

  1. 列出项目以获取项目 ID
    gcloud projects list
    
    # save you project id
    PROJECT_ID="YOURS_PROJECT_ID"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 获取 ACCESS_TOKEN
    ACCESS_TOKEN=$(gcloud auth print-access-token)
    
    Run Code Online (Sandbox Code Playgroud)
  3. 获取 API_KEY
    API_KEY=$(curl -X POST https://apikeys.googleapis.com/v1/projects/$PROJECT_ID/apiKeys?access_token=$ACCESS_TOKEN | jq -r ".currentKey")
    
    Run Code Online (Sandbox Code Playgroud)
  4. 打印 API_KEY 和 ACCESS_TOKEN
    echo $ACCESS_TOKEN
    echo $API_KEY
    
    Run Code Online (Sandbox Code Playgroud)

要首先在本地机器上运行上述命令,您需要使用命令进行身份验证gcloud auth login并按照说明进行操作。

或者,可以从控制台读取或创建 api 密钥转到Navigation Menu-> APIs & Services->Credentials然后单击CREATE CREDENTIALS-> API Key


通过阅读文档(点击旁边的问号Credentials),我们可以阅读:

  • [YOUR_API_KEY] - “包括一个 API 密钥来识别您的项目,用于验证启用和跟踪请求配额。”
  • [YOUR_ACCESS_TOKEN] - “包括访问(持有者)令牌,以识别使用您的客户端 ID 完成 OAuth 流程的用户。”