获取有关 API 密钥的信息

本页介绍了如何使用 API 密钥方法执行以下操作:

准备工作

该页面将 curloauth2l 命令行工具结合使用,以向 API Keys 的 API 发送请求。如需详细了解如何开始使用 API,请参阅 API 密钥使用入门

列出项目中的 API 密钥

您可以使用 ListKeys 方法获取归 Google Cloud 项目所有的所有密钥的列表:

gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys

成功后,您将收到类似于以下内容的响应:

{
  "keys": [
    {
      "name": "projects/12345678/locations/global/keys/2885bf87-5b84-47fa-92af-08c3e9337349",
      "displayName": "API key 2",
      "createTime": "2019-05-29T22:07:22.036Z",
      "uid": "2885bf87-5b84-47fa-92af-08c3e9337349",
      "updateTime": "2019-05-29T22:07:22.058623Z",
      "restrictions": {
        "androidKeyRestrictions": {}
      },
      "etag": "zHib8eXEMCxe4ayQEbIaZg=="
    },
    {
      "name": "projects/12345678/locations/global/keys/a4db08b7-5729-4ba9-8c08-f2df493465a1",
      "displayName": "API key 1",
      "createTime": "2019-05-29T22:06:58.844Z",
      "uid": "a4db08b7-5729-4ba9-8c08-f2df493465a1",
      "updateTime": "2019-05-29T22:06:58.855103Z",
      "restrictions": {
        "androidKeyRestrictions": {}
      },
      "etag": "0L5KcPMGoNi53K5+FqPxiw=="
    }
  ]
}

默认情况下,ListKeys 方法会返回可用 API 密钥的列表。如需查看已标记为删除的列表键,请使用 filter=state:DELETED 添加查询参数:

gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys?filter=state:DELETED

成功后,您将收到类似于以下内容的响应:

{
  "keys": [
    {
      "name": "projects/12345678/locations/global/keys/5d3564ad-f08e-48df-b0ca-0f50858ba3f2",
      "displayName": "Key 1",
      "createTime": "2019-06-12T04:47:30.214Z",
      "uid": "5d3564ad-f08e-48df-b0ca-0f50858ba3f2",
      "updateTime": "2021-03-05T22:35:37.387645Z",
      "deleteTime": "2021-03-05T22:35:37.290544Z",
      "etag": "V96UGAyyz+6sUHttzK42pQ=="
    },
    {
      "name": "projects/12345678/locations/global/keys/7ad567fa-c11b-4903-99dc-88f89da7d73a",
      "displayName": "Key 2",
      "createTime": "2019-06-12T00:47:27.778Z",
      "uid": "7ad567fa-c11b-4903-99dc-88f89da7d73a",
      "updateTime": "2021-03-05T22:23:57.002187Z",
      "deleteTime": "2021-03-05T22:23:56.350234Z",
      "etag": "njPE6YjwHlrh6TLyxHibBg=="
    }
  ]
}

deleteTime 字段会在发出删除命令时存储。密钥会在发出删除命令 30 天后被永久删除。

如果您的项目中有许多 API 密钥,您可能更倾向于对结果进行分页,而不是返回所有密钥。如需控制每页的结果数量或结果,请将 pageSize 查询参数设置为您要返回的结果数:

gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys?pageSize=25

响应末尾包含 nextPageToken 字段。要获取下一页结果,请添加 pageToken 查询参数,以在下次调用中添加令牌:

gcurl 'https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys?pageSize=25&pageToken=TOKEN'

请注意,网址必须括在英文单引号中,因为 & 是特殊的 Bash 字符。

获取 API 密钥的元数据

如需获取特定 API 密钥的元数据,请使用 Key.name 调用 GetKey 方法:

gcurl https://apikeys.googleapis.com/v2/projects/PROJECT_NUMBER/locations/global/keys/KEY_ID

获取键字符串

为了安全起见,ListKeysGetKey 方法不返回 Key.keyString。要获取 API 密钥的 keyString,请使用 Key.name 调用 GetKeyString 方法:

gcurl https://apikeys.googleapis.com/v2/Key.name/keyString

调用用户必须具有 apikeys.keys.getKeyString 权限才能调用 GetKeyString 方法。

查找键名并按键字符串进行项目

如果您有一个 keyString,并且需要查找键 name 和 API 密钥所属的项目,请调用 LookupKey 方法并指定 keyString 查询参数:

gcurl https://apikeys.googleapis.com/v2/keys:lookupKey?keyString=KEY_STRING

响应类似如下所示:

{
  "parent": "projects/12345678/locations/global",
  "name": "projects/12345678/locations/global/keys/2c437be3-1c77-417b-8f6f-748189760227"
}

在响应中:

  • parent 字段包含创建 API 密钥的 Cloud 项目的编号。
  • name 字段包含 API 密钥的唯一标识符。

后续步骤