Google Cloud Platform REST API: 获取访问令牌和 API 密钥
Google Cloud Platform REST API: Acquiring Access Token and API Key
我希望在本地使用 Google 云平台 (GCP) REST API,从 apps.services.versions.instances.list
方法开始。
当我使用“试试这个 API”here 时,该路由有效,但我如何在本地使用此方法 curl
?
"https://appengine.googleapis.com/v1/apps/$APPSID/services/$SERVICESID/versions/$VERSIONSID/instances?key=$YOUR_API_KEY" \
--compressed \
--header 'Accept: application/json' \
--header "Authorization: Bearer $YOUR_ACCESS_TOKEN"
#=>
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
如何访问 $YOUR_API_KEY
和 $YOUR_ACCESS_TOKEN
?我一直无法在官方 GCP 文档中找到它们。
最快的方法是使用云 Shell:
- 列出项目以获取项目 ID
gcloud projects list
# save you project id
PROJECT_ID="YOURS_PROJECT_ID"
- 获取ACCESS_TOKEN
ACCESS_TOKEN=$(gcloud auth print-access-token)
- 获取API_KEY
API_KEY=$(curl -X POST https://apikeys.googleapis.com/v1/projects/$PROJECT_ID/apiKeys?access_token=$ACCESS_TOKEN | jq -r ".currentKey")
- 打印 API_KEY 和 ACCESS_TOKEN
echo $ACCESS_TOKEN
echo $API_KEY
为了 运行 在本地机器上执行上述命令,您首先需要使用命令 gcloud auth login
进行身份验证并按照说明进行操作。
或者可以从控制台读取或创建 api 键转到 Navigation Menu
-> APIs & Services
-> Credentials
然后单击 CREATE CREDENTIALS
- > API Key
.
通过阅读documentation(点击Credentials
旁边的问号)我们可以阅读:
[YOUR_API_KEY]
- “包含一个 API 密钥来标识您的项目,用于验证启用和跟踪请求配额。”
[YOUR_ACCESS_TOKEN]
- “包括访问(不记名)令牌以识别使用您的客户端 ID 完成 OAuth 流程的用户。”
您不再需要 API 密钥。这是 Google API 的遗留功能,仅提供访问令牌就足够了。
在命令行中你可以这样做
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://....
所有 Google 云 API 都符合访问令牌身份验证。很少有人仍然遵守 API 密钥。
关于API键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
如你所见,我复用了access token认证方式
以上答案使用的 API 未公开(我已联系 GCP 支持人员确认。
我建议像这样使用 CLI 工具:
gcloud app instances list --service core-api --project my-project-name
文档:https://cloud.google.com/sdk/gcloud/reference/app/instances/list
您必须先 gcloud auth 并可能设置您的项目。
我希望在本地使用 Google 云平台 (GCP) REST API,从 apps.services.versions.instances.list
方法开始。
当我使用“试试这个 API”here 时,该路由有效,但我如何在本地使用此方法 curl
?
"https://appengine.googleapis.com/v1/apps/$APPSID/services/$SERVICESID/versions/$VERSIONSID/instances?key=$YOUR_API_KEY" \
--compressed \
--header 'Accept: application/json' \
--header "Authorization: Bearer $YOUR_ACCESS_TOKEN"
#=>
{
"error": {
"code": 401,
"message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
"status": "UNAUTHENTICATED"
}
}
如何访问 $YOUR_API_KEY
和 $YOUR_ACCESS_TOKEN
?我一直无法在官方 GCP 文档中找到它们。
最快的方法是使用云 Shell:
- 列出项目以获取项目 ID
gcloud projects list # save you project id PROJECT_ID="YOURS_PROJECT_ID"
- 获取ACCESS_TOKEN
ACCESS_TOKEN=$(gcloud auth print-access-token)
- 获取API_KEY
API_KEY=$(curl -X POST https://apikeys.googleapis.com/v1/projects/$PROJECT_ID/apiKeys?access_token=$ACCESS_TOKEN | jq -r ".currentKey")
- 打印 API_KEY 和 ACCESS_TOKEN
echo $ACCESS_TOKEN echo $API_KEY
为了 运行 在本地机器上执行上述命令,您首先需要使用命令 gcloud auth login
进行身份验证并按照说明进行操作。
或者可以从控制台读取或创建 api 键转到 Navigation Menu
-> APIs & Services
-> Credentials
然后单击 CREATE CREDENTIALS
- > API Key
.
通过阅读documentation(点击Credentials
旁边的问号)我们可以阅读:
[YOUR_API_KEY]
- “包含一个 API 密钥来标识您的项目,用于验证启用和跟踪请求配额。”[YOUR_ACCESS_TOKEN]
- “包括访问(不记名)令牌以识别使用您的客户端 ID 完成 OAuth 流程的用户。”
您不再需要 API 密钥。这是 Google API 的遗留功能,仅提供访问令牌就足够了。
在命令行中你可以这样做
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" https://....
所有 Google 云 API 都符合访问令牌身份验证。很少有人仍然遵守 API 密钥。
关于API键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
如你所见,我复用了access token认证方式
以上答案使用的 API 未公开(我已联系 GCP 支持人员确认。
我建议像这样使用 CLI 工具:
gcloud app instances list --service core-api --project my-project-name
文档:https://cloud.google.com/sdk/gcloud/reference/app/instances/list
您必须先 gcloud auth 并可能设置您的项目。