本页面介绍了如何使用 API 密钥向支持 API 密钥的 Google Cloud API 和服务进行身份验证。
大多数 Google Cloud API 不支持 API 密钥。在使用此身份验证方法之前,请确定您要使用的 API 支持 API 密钥。
如需了解如何使用 API 密钥向 Google Maps Platform 进行身份验证,请参阅 Google Maps Platform 文档。如需详细了解 API Keys API,请参阅 API Keys API 文档。API 密钥简介
使用 API 密钥向 API 进行身份验证时,API 密钥不会标识主账号,也不会提供任何授权信息。因此,请求不使用 Identity and Access Management (IAM) 检查调用者是否有权执行请求的操作。
API 密钥会将请求与 Google Cloud 项目关联,以进行结算和配额计算。由于 API 密钥不标识调用方,因此通常用于访问公开数据或资源。
许多 Google Cloud API 不接受通过 API 密钥进行身份验证。查看您要使用的服务或 API 的身份验证文档,以确定它是否支持 API 密钥。
API 密钥包含以下组成部分,可用于管理和使用密钥:
- 字符串
- API 密钥字符串是加密的字符串,例如
AIzaSyDaGmWKa4JsXZ-HjGw7ISLn_3namBGewQe
。当您使用 API 密钥进行身份验证时,始终是使用密钥的字符串。API 密钥没有关联的 JSON 文件。 - ID
- Google Cloud 管理工具使用 API 密钥 ID 来唯一标识密钥。密钥 ID 不能用于进行身份验证。您可以在 Google Cloud 控制台的密钥修改页面的网址中找到密钥 ID。您还可以使用 Google Cloud CLI 列出项目中的密钥来获取密钥 ID。
- 显示名称
- 显示名称是密钥的可选描述性名称,您可以在创建或更新密钥时设置该名称。
如需管理 API 密钥,您必须拥有项目的 API Keys Admin 角色 (roles/serviceusage.apiKeysAdmin
)。
准备工作
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Java
如需在本地开发环境中使用本页面上的 Java 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
Python
如需在本地开发环境中使用本页面上的 Python 示例,请安装并初始化 gcloud CLI,然后使用您的用户凭据设置应用默认凭据。
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
If you're using a local shell, then create local authentication credentials for your user account:
gcloud auth application-default login
You don't need to do this if you're using Cloud Shell.
如需了解详情,请参阅 Google Cloud 身份验证文档中的为本地开发环境设置身份验证。
REST
如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证。
创建 API 密钥
如需创建 API 密钥,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,进入凭据页面:
选择创建凭据,然后从菜单中选择 API 密钥。
已创建的 API 密钥对话框会显示新创建的密钥的字符串。
gcloud
您可以使用 gcloud beta services api-keys create
命令创建 API 密钥。
将 DISPLAY_NAME
替换为密钥的描述性名称。
gcloud beta services api-keys create --display-name=DISPLAY_NAME
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
您可以使用 keys.create
方法创建 API 密钥。请求会返回长时间运行的操作;您必须轮询该操作以获取新密钥的信息。
替换以下值:
DISPLAY_NAME
:可选。密钥的描述性名称。PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d {'"displayName" : "DISPLAY_NAME"'} \ "https://apikeys.googleapis.com/v2/projects/PROJECT/locations/global/keys"
如需详细了解如何使用 REST API 创建 API 密钥,请参阅 API Keys API 文档中的创建 API 密钥。
请复制您的密钥字符串,并确保其安全。除非您使用的是之后打算删除的测试密钥,否则请添加应用和 API 密钥限制。
使用 API 密钥
如果 API 支持使用 API 密钥,则您可以使用 API 密钥对该 API 进行身份验证。您可以将 API 密钥与 REST 请求以及支持 API 密钥的客户端库搭配使用。
将 API 密钥与 REST 搭配使用
您可以将 API 密钥作为查询参数传递给 REST API 调用,格式如下。将 API_KEY
替换为您的 API 密钥的密钥字符串。
例如,为针对 documents.analyzeEntities
发出的 Cloud Natural Language API 请求传递 API 密钥:
POST https://language.googleapis.com/v1/documents:analyzeEntities?key=API_KEY
或者,您可以使用 x-goog-api-key
标头传入密钥。此标头必须与 gRPC 请求搭配使用。
curl -X POST \ -H "X-goog-api-key: API_KEY" \ -H "Content-Type: application/json; charset=utf-8" \ -d @request.json \ "https://translation.googleapis.com/language/translate/v2"
将 API 密钥与客户端库搭配使用
客户端库对 API 密钥的支持是特定于语言的。
Python
此示例使用支持使用 API 密钥进行身份验证的 Cloud Natural Language API 来演示如何向库提供 API 密钥。
如需运行此示例,您必须安装 Natural Language 客户端库和 API 密钥客户端库。
保护 API 密钥的安全
当您在应用中使用 API 密钥时,请确保其在存储和传输期间均安全无虞。公开泄露 API 密钥可能会导致您的账号产生意外费用。为帮助确保 API 密钥的安全,请遵循以下最佳做法:
为密钥添加 API 密钥限制。
通过添加限制,您可以限制 API 密钥的使用方式,从而降低 API 密钥被破解造成的影响。
删除不需要的 API 密钥以最大限度地减少遭到攻击的风险。
定期重新创建 API 密钥。
定期创建新的 API 密钥、删除旧密钥,并更新应用以使用新的 API 密钥。
应用 API 密钥限制
默认情况下,API 密钥不受限制。不受限制的密钥会带来安全方面的问题,因为任何人都可以随时随地使用此类密钥。对于生产应用,您应该同时设置应用限制和 API 限制。
添加应用限制
应用限制用于指定哪些网站、IP 地址或应用可以使用 API 密钥。
您一次只能应用一种应用限制类型。根据您的应用类型选择限制类型:
选项 | 应用类型 | 备注 |
---|---|---|
HTTP 引荐来源网址 | Web 应用 | 指定可以使用密钥的网站。 |
IP 地址 | 由特定服务器调用的应用 | 指定可以使用密钥的服务器或 Cron 作业。 |
Android 应用 | Android 应用 | 指定可以使用密钥的 Android 应用。 |
iOS 应用 | iOS 应用 | 指定可以使用密钥的 iOS 软件包。 |
HTTP 引荐来源网址
如需限制可使用 API 密钥的网站,请添加一个或多个 HTTP 引荐来源网址限制。
您可以用通配符 (*
) 来替换子网域或路径,但不能将通配符插入到网址的中间。例如,*.example.com
有效,并且接受以 .example.com
结尾的所有网站。但是,mysubdomain*.example.com
不是有效的限制。
HTTP 引荐来源网址限制中可以包含端口号。如果您添加了端口号,则系统只会匹配使用该端口的请求。如果您未指定端口号,则匹配来自任何端口号的请求。
您最多可以为 API 密钥添加 1200 个 HTTP 引荐来源网址。
下表展示了一些示例场景和浏览器限制:
使用场景 | 限制 |
---|---|
允许特定的网址 | 添加包含确切路径的网址。例如:www.example.com/path www.example.com/path/path 某些浏览器会实施引荐来源网址政策,从而仅发送跨域请求的源网址。这些浏览器的用户无法使用具有页面级网址限制的密钥。 |
允许网站中的任何网址 | 您必须在 allowedReferers 列表中设置两个网址。
|
允许单个子网域或裸网域中的任何网址 |
您必须在
|
如需将 API 密钥仅限于特定网站,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,进入凭据页面:
点击您要限制的 API 密钥的名称。
在应用限制部分中,选择 HTTP 引荐来源网址。
对于要添加的每个限制,请点击添加一项,输入限制,然后点击完成。
点击保存以保存更改并返回到 API 密钥列表。
gcloud
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用
gcloud services api-keys list
命令列出项目中的密钥来获取此 ID。使用
gcloud beta services api-keys update
命令为 API 密钥添加 HTTP 引荐来源网址限制。替换以下值:
KEY_ID
:您要限制的密钥的 ID。ALLOWED_REFERRER_1
:HTTP 引荐来源网址限制。您可以根据需要添加任意数量的限制;请使用英文逗号来分隔这些限制。您必须使用 update 命令来提供所有引荐来源网址限制;提供的引荐来源网址限制会替换密钥的任何现有引荐来源网址限制。
gcloud beta services api-keys update KEY_ID \ --allowed-referrers="ALLOWED_REFERRER_1"
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用 keys.list 方法获取此 ID。此 ID 列在响应的
uid
字段中。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID 或名称。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
使用 keys.patch 方法为 API 密钥添加 HTTP 引荐来源网址限制。
请求会返回长时间运行的操作;您必须轮询该操作以了解操作完成时间并获取操作状态。
替换以下值:
ALLOWED_REFERRER_1
:HTTP 引荐来源网址限制。您可以根据需要添加任意数量的限制;请使用英文逗号来分隔这些限制。您必须使用请求来提供所有引荐来源网址限制;提供的引荐来源网址限制会替换密钥的任何现有引荐来源网址限制。
PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。KEY_ID
:您要限制的密钥的 ID。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "restrictions" : { "browserKeyRestrictions": { "allowedReferrers": ["ALLOWED_REFERRER_1"] } } }' \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"
如需详细了解如何使用 REST API 为密钥添加 HTTP 引荐来源网址限制,请参阅 API Keys API 文档中的添加浏览器限制。
IP 地址
您可以指定允许使用 API 密钥的调用方(例如 Web 服务器或 Cron 作业)的一个或多个 IP 地址。您可以采用以下任一格式指定 IP 地址:
- IPv4 (
198.51.100.1
) - IPv6 (
2001:db8::1
) - 使用 CIDR 表示法的子网(
198.51.100.0/24
、2001:db8::/64
)
服务器限制不支持使用 localhost
。
如需将 API 密钥仅限于特定 IP 地址,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,进入凭据页面:
点击您要限制的 API 密钥的名称。
在应用限制部分中,选择 IP 地址。
对于要添加的每个 IP 地址,点击添加一项,输入地址,然后点击完成。
点击保存以保存更改并返回到 API 密钥列表。
gcloud
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用
gcloud services api-keys list
命令列出项目中的密钥来获取此 ID。使用
gcloud beta services api-keys update
命令为 API 密钥添加服务器(IP 地址)限制。替换以下值:
KEY_ID
:您要限制的密钥的 ID。ALLOWED_IP_ADDR_1
:允许的 IP 地址。您可以根据需要添加任意数量的 IP 地址。请使用英文逗号来分隔这些地址。
gcloud beta services api-keys update KEY_ID \ --allowed-ips="ALLOWED_IP_ADDR_1"
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用 keys.list 方法获取此 ID。此 ID 列在响应的
uid
字段中。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID 或名称。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
使用 keys.patch 方法为 API 密钥添加服务器(IP 地址)限制。
请求会返回长时间运行的操作;您必须轮询该操作以了解操作完成时间并获取操作状态。
替换以下值:
ALLOWED_IP_ADDR_1
:允许的 IP 地址。您可以根据需要添加任意数量的 IP 地址。请使用英文逗号来分隔限制。您必须将所有 IP 地址随请求一起提供。提供的引荐来源网址限制会替换密钥的任何现有 IP 地址限制。
PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。KEY_ID
:您要限制的密钥的 ID。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "restrictions" : { "serverKeyRestrictions": { "allowedIps": ["ALLOWED_IP_ADDR_1"] } } }' \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"
如需详细了解如何使用 REST API 为密钥添加 IP 地址限制,请参阅 API Keys API 文档中的添加服务器限制。
Android 应用
您可以限制只有特定 Android 应用可以使用 API 密钥。您必须为每个应用提供软件包名称和 20 字节 SHA-1 证书指纹。
在请求中使用 API 密钥时,您必须使用以下 HTTP 标头指定软件包名称和证书指纹:
X-Android-Package
X-Android-Cert
如需将 API 密钥仅限于一个或多个 Android 应用,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,进入凭据页面:
点击您要限制的 API 密钥的名称。
在应用限制部分中,选择 Android 应用。
对于要添加的每个 Android 应用,请点击 添加一项,输入软件包名称和 SHA-1 证书指纹,然后点击完成。
点击保存以保存更改并返回到 API 密钥列表。
gcloud
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用
gcloud services api-keys list
命令列出项目中的密钥来获取此 ID。使用
gcloud beta services api-keys update
命令指定可以使用 API 密钥的 Android 应用。替换以下值:
KEY_ID
:您要限制的密钥的 ID。SHA1_FINGERPRINT
和PACKAGE_NAME
:可以使用该密钥的 Android 应用的应用信息。您可以根据需要添加任意数量的应用;请使用额外
--allowed-application
标志。
gcloud beta services api-keys update KEY_ID \ --allowed-application=sha1_fingerprint=SHA1_FINGERPRINT_1,package_name=PACKAGE_NAME_1 \ --allowed-application=sha1_fingerprint=SHA1_FINGERPRINT_2,package_name=PACKAGE_NAME_2
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用 keys.list 方法获取此 ID。此 ID 列在响应的
uid
字段中。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID 或名称。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
使用 keys.patch 方法指定可以使用 API 密钥的 Android 应用。
请求会返回长时间运行的操作;您必须轮询该操作以了解操作完成时间并获取操作状态。
替换以下值:
SHA1_FINGERPRINT_1
和 PACKAGE_NAME_1:可以使用该密钥的 Android 应用的应用信息。您可以根据需要添加任意数量的应用的信息;请使用英文逗号分隔 AndroidApplication 对象。您必须将所有应用随请求一起提供;提供的应用会替换密钥的任何现有允许的应用。
PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。KEY_ID
:您要限制的密钥的 ID。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "restrictions" : { "androidKeyRestrictions": { "allowedApplications": [ { "sha1Fingerprint": "SHA1_FINGERPRINT_1", "packageName": "PACKAGE_NAME_1" }, ] } } }' \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"
如需详细了解如何使用 REST API 为密钥添加 Android 应用限制,请参阅 API Keys API 文档中的添加 Android 限制。
iOS 应用
您可以通过提供每个应用的软件包 ID,将 API 密钥的使用仅限于特定 iOS 应用。
在请求中使用 API 密钥时,您必须使用 X-Ios-Bundle-Identifier
HTTP 标头指定软件包 ID。
如需将 API 密钥仅限于一个或多个 iOS 应用,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,进入凭据页面:
点击您要限制的 API 密钥的名称。
在应用限制部分中,选择 iOS 应用。
对于要添加的每个 iOS 应用,请点击添加一项,输入软件包 ID,然后点击完成。
点击保存以保存更改并返回到 API 密钥列表。
gcloud
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用
gcloud services api-keys list
命令列出项目中的密钥来获取此 ID。使用
gcloud beta services api-keys update
方法指定可以使用该密钥的 iOS 应用。替换以下值:
KEY_ID
:您要限制的密钥的 ID。ALLOWED_BUNDLE_ID
:可以使用此 API 密钥的 iOS 应用的软件包 ID。您可以根据需要添加任意数量的软件包 ID;请使用英文逗号分隔这些 ID。
gcloud beta services api-keys update KEY_ID \ --allowed-bundle-ids=ALLOWED_BUNDLE_ID_1,ALLOWED_BUNDLE_ID_2
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用 keys.list 方法获取此 ID。此 ID 列在响应的
uid
字段中。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID 或名称。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
使用 keys.patch 方法指定可以使用 API 密钥的 iOS 应用。
请求会返回长时间运行的操作;您必须轮询该操作以了解操作完成时间并获取操作状态。
替换以下值:
ALLOWED_BUNDLE_ID
:可以使用该密钥的 iOS 应用的软件包 ID。您可以根据需要添加任意数量的应用的信息;请使用英文逗号分隔软件包 ID。您必须将所有软件包 ID 随请求一起提供。提供的软件包 ID 会替换密钥的任何现有允许的应用。
PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。KEY_ID
:您要限制的密钥的 ID。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "restrictions" : { "iosKeyRestrictions": { "allowedBundleIds": ["ALLOWED_BUNDLE_ID_1","ALLOWED_BUNDLE_ID_2"] } } }' \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"
如需详细了解如何使用 REST API 为密钥添加 iOS 应用限制,请参阅 API Keys API 文档中的添加 iOS 限制。
添加 API 限制
API 限制用于指定可以使用 API 密钥调用哪些 API。
如需添加 API 限制,请使用以下选项之一:
控制台
在 Google Cloud 控制台中,进入凭据页面:
点击您要限制的 API 密钥的名称。
在 API 限制部分中,点击限制密钥。
选择 API 密钥将用于访问的所有 API。
点击保存以保存更改并返回到 API 密钥列表。
gcloud
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用
gcloud services api-keys list
命令列出项目中的密钥来获取此 ID。使用
gcloud beta services api-keys update
命令指定可使用 API 密钥向其进行身份验证的服务。替换以下值:
KEY_ID
:您要限制的密钥的 ID。SERVICE_1
、SERVICE_2
...:可使用此密钥访问的 API 的服务名称。您必须使用 update 命令提供所有服务名称;提供的服务名称会替换密钥的任何现有服务。
您可以在 API 信息中心上搜索 API 来查找服务名称。服务名称是类似
bigquery.googleapis.com
的字符串。gcloud beta services api-keys update KEY_ID \ --api-target=service=SERVICE_1 --api-target=service=SERVICE_2
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
获取要限制的密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用 keys.list 方法获取此 ID。此 ID 列在响应的
uid
字段中。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID 或名称。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/"
使用 keys.patch 方法指定可使用 API 密钥向其进行身份验证的服务。
请求会返回长时间运行的操作;您必须轮询该操作以了解操作完成时间并获取操作状态。
替换以下值:
SERVICE_1
、SERVICE_2
...:可使用此密钥访问的 API 的服务名称。您必须将所有服务名称随请求一起提供;提供的服务名称会替换密钥的任何现有服务。
您可以在 API 信息中心上搜索 API 来查找服务名称。服务名称是类似
bigquery.googleapis.com
的字符串。PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。KEY_ID
:您要限制的密钥的 ID。
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data '{ "restrictions" : { "apiTargets": [ { "service": "SERVICE_1" }, { "service" : "SERVICE_2" }, ] } }' \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID?updateMask=restrictions"
如需详细了解如何使用 REST API 为密钥添加 API 限制,请参阅 API Keys API 文档中的添加 API 限制。
从密钥字符串获取项目信息
您可以从 API 密钥字符串中确定与 API 密钥关联的 Google Cloud 项目。
将 KEY_STRING
替换为您需要其项目信息的密钥字符串。
gcloud
您可以使用 gcloud beta services api-keys lookup
命令从密钥字符串获取项目 ID。
gcloud beta services api-keys lookup KEY_STRING
Java
如需运行此示例,您必须安装 google-cloud-apikeys
客户端库。
Python
如需运行此示例,您必须安装 API 密钥客户端库。
REST
您可以使用 lookupKey
方法从密钥字符串获取项目 ID。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://apikeys.googleapis.com/v2/keys:lookupKey?keyString=KEY_STRING"
恢复删除的 API 密钥
如果您误删了 API 密钥,可以在删除密钥后的 30 天内恢复删除的密钥。30 天后,您无法恢复删除的 API 密钥。
控制台
在 Google Cloud 控制台中,进入凭据页面:
点击 Restore deleted credentials(恢复已删除的凭据)。
找到要恢复的已删除 API 密钥,然后点击恢复。
恢复删除的 API 密钥可能需要几分钟才能传播。传播后,恢复的 API 密钥会显示在 API 密钥列表中。
gcloud
获取要恢复的已删除密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用
gcloud services api-keys list --show-deleted
命令列出项目中的已删除密钥来获取此 ID。使用
gcloud beta services api-keys undelete
命令恢复删除的 API 密钥。gcloud beta services api-keys undelete KEY_ID
替换以下值:
KEY_ID
:您要恢复的已删除密钥的 ID。
REST
获取要恢复的已删除密钥的 ID。
此 ID 与显示名称或密钥字符串不同。您可以使用 keys.list 方法并将
showDeleted
查询参数设置为true
,以获取此 ID。此密钥 ID 列在响应的uid
字段中。将
PROJECT_ID
替换为您的 Google Cloud 项目 ID 或名称。curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys?showDeleted=true"
使用 undelete 方法恢复删除的 API 密钥。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://apikeys.googleapis.com/v2/projects/PROJECT_ID/locations/global/keys/KEY_ID:undelete"
请求会返回长时间运行的操作;您必须轮询该操作以了解操作完成时间并获取操作状态。
替换以下值:
PROJECT_ID
:您的 Google Cloud 项目 ID 或名称。KEY_ID
:您要限制的密钥的 ID。
轮询长时间运行的操作
API Keys API 方法使用长时间运行的操作。如果您使用 REST API 创建和管理 API 密钥,则初始方法请求会返回操作对象。您可以使用操作名称来轮询长时间运行的操作。长时间运行的请求完成后,轮询操作会返回长时间运行的请求中的数据。
如需轮询长时间运行的 API Keys API 操作,请使用 operations.get
方法。
将 OPERATION_NAME
替换为长时间运行的操作返回的操作名称。例如 operations/akmf.p7-358517206116-cd10a88a-7740-4403-a8fd-979f3bd7fe1c
。
curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ "https://apikeys.googleapis.com/v2/OPERATION_NAME"
API 密钥的限制
您最多可以为每个项目创建 300 个 API 密钥。此限制是系统限制,不能通过配额提升请求进行更改。
如果需要更多 API 密钥,则必须使用多个项目。
后续步骤
- 大致了解身份验证方法。
- 详细了解 API 密钥 API。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2024-12-03。