获取有关 API 密钥的信息

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

准备工作

此页面使用 curl 和 Google Cloud CLI 向 API 密钥 API 发送请求。如需详细了解如何设置 API 以进行实验,请参阅 API Keys 使用入门

列出项目中的 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 密钥的列表。 如需查看所有密钥的列表(包括标记为待删除的密钥),请添加查询参数 show_deleted=true

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

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

{
  "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=="
    },
    {
      "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=="
    }
  ]
}

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 密钥的 Google Cloud 项目的项目编号。
  • name 字段包含 API 密钥的唯一标识符。

后续步骤