本文档介绍了开始使用 Places API(新版)所需的步骤。
前提条件
此过程将指导您设置 Google Cloud 账号和启用了结算功能的 Google Cloud 项目。 您还应熟悉 Places API(新版)的使用费用。
- 如需查看用量结算和费用,请参阅 Places API(新版)用量和结算。
验证您是否拥有 Google Cloud 账号。
登录 Google Cloud 控制台验证您是否拥有已启用结算功能的 Google Cloud 项目。
前往“结算”页面- 选择您的项目以打开结算页面。
在结算页面上:
- 如果所选项目已启用结算功能,并且您只有一个结算账号,则系统会打开结算页面。
- 如果您有多个结算账号,请选择转至关联的结算账号,查看与项目关联的结算账号的相关详情。
- 如果已存在结算账号,但未与项目关联,系统会提示您将结算账号与项目关联。
- 如果没有结算账号,或者您想创建新的结算账号,请选择管理结算账号以创建新的结算账号。如需了解详情,请参阅创建新的自助 Cloud Billing 账号。
启用 API
您必须先使用 Google Cloud 控制台或 gcloud 命令在 Google Cloud 项目中启用 Places API(新版),然后才能使用该 API。
如需启用 API,请执行以下操作:
控制台
在 Google Cloud 控制台中打开产品页面:
启用 Places API(新版)点击启用按钮。
gcloud
gcloud services enable \ --project "PROJECT" \ "places.googleapis.com"
详细了解 Google Cloud SDK、Cloud SDK 安装和以下命令:
获取用于 Places API(新版)的 API 密钥
Google Maps Platform 产品要求 API 调用包含 API 密钥或 OAuth 令牌,以防止未经授权的使用。 首先是 API 密钥过程。如需改用 OAuth 令牌,请参阅创建 OAuth 令牌。
API 密钥是具有唯一性的字母数字字符串,可将您的 Cloud Billing 账号和 Google Cloud 项目与您的应用向 Google Maps Platform API 或 SDK 发出的请求相关联。如需创建新密钥或向现有密钥添加 API 或 SDK,请按照以下说明操作。
控制台
-
前往 Google Maps Platform > 密钥和凭证页面。
- 如果出现提示,请选择您的项目。
-
执行以下其中一项操作:
-
创建新密钥:
- 点击创建凭据 > API 密钥。
- 在创建 API 密钥面板中,打开选择 API 限制列表。
- 清除此密钥不需要的所有 API,并确保 Places API(新版)保持选中状态。
- 点击创建。该面板会显示您的新 API 密钥。
-
使用现有密钥:
- 点击密钥的名称。
- 在选择 API 限制列表中,选择 Places API (New)。
- 点击保存。
在此处选择 API 并不会启用它。确保已在 API 库页面上启用 Places API(新版)。
-
- 如需稍后查看密钥字符串,请前往密钥和凭证页面,然后点击相应密钥的显示密钥。
gcloud
在以下命令中,将 PROJECT_ID 替换为您的项目 ID。
-
创建新密钥:运行以下命令,并将 DISPLAY_NAME 替换为密钥的名称。
gcloud services api-keys create \ --project="PROJECT_ID" \ --display-name="DISPLAY_NAME" \ --api-target=service=places.googleapis.com
详细了解 Google Cloud SDK、Cloud SDK 安装和以下命令:
-
使用现有密钥:运行以下命令,并将 KEY_ID 替换为密钥的 ID。
--append标志会保留密钥已允许的 API。如果不使用此参数,该命令会替换这些标签。gcloud services api-keys update KEY_ID \ --project="PROJECT_ID" \ --append \ --api-target=service=places.googleapis.com
详细了解 Google Cloud SDK、Cloud SDK 安装和以下命令:
键 ID 不是键字符串或显示名称。如需查找该 ID,请运行
gcloud services api-keys list --project="PROJECT_ID"。 该 ID 是name字段的最后一部分:projects/PROJECT_NUMBER/locations/global/keys/KEY_ID。
如需查看密钥字符串,请运行 gcloud services api-keys get-key-string KEY_ID
--project="PROJECT_ID"。
发出 API 请求
发出 Places API(新版)请求,以返回针对字符串“Spicy Vegetarian Food in Sydney, Australia”的文本搜索的 JSON 响应。您必须在每个请求中包含 API 密钥的字母数字字符串,并对包含 API 密钥的请求使用 HTTPS。
点击下方代码中的 API_KEY,插入密钥的字母数字字符串:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel' \ 'https://places.googleapis.com/v1/places:searchText'- 点击代码示例中的复制图标
,复制 curl命令。 - 将该命令粘贴到终端窗口中,然后运行该命令。
响应是一个 JSON 对象,格式如下:
{ "places": [ { "name": "places/ChIJs5ydyTiuEmsR0fRSlU0C7k0", "id": "ChIJs5ydyTiuEmsR0fRSlU0C7k0", "types": [ "vegan_restaurant", "vegetarian_restaurant", "meal_takeaway", "restaurant", "food", "point_of_interest", "establishment" ], "nationalPhoneNumber": "0433 479 794", "internationalPhoneNumber": "+61 433 479 794", "formattedAddress": "29 King St, Sydney NSW 2000, Australia", "addressComponents": [ { "longText": "29", "shortText": "29", "types": [ "street_number" ], "languageCode": "en-US" }, ... }
应用 API 密钥限制
Google 强烈建议您限制 API 密钥,仅将其用于需要它们的 API 和应用。限制 API 密钥可防止您的应用收到无正当理由的请求,从而提高应用安全性。API 密钥支持两种类型的限制:
- API 限制用于指定可以使用 API 密钥调用哪些 SDK 和 API。在您创建密钥时,控制台和 gcloud CLI 要求至少设置一项 API 限制。
- 应用限制用于指定哪些网站、IP 地址或应用可以使用 API 密钥。
如需详细了解如何应用限制,请参阅限制 API 密钥。
创建 OAuth 令牌
Places API(新版)支持使用 OAuth 2.0 进行身份验证。Google 支持常见的 OAuth 2.0 场景,例如 Web 服务器场景。
本文档介绍了如何在开发环境中将 OAuth 令牌传递给 Places API(新版)调用。如需详细了解如何在生产环境中使用 OAuth,请参阅 Google 的身份验证方法。
您可以直接通过向服务器发出 API 请求来调用 Google 地图 API,也可以使用客户端库来简化代码。Google 地图提供适用于 Go、Java、Node.js 和 Python 的客户端库。如需了解详情,请参阅 Places API(新版)客户端库。
OAuth 概览
您可以通过多种方式使用 OAuth 创建和管理访问令牌,具体取决于您的部署环境。
您可以使用 OAuth 2.0 在应用与 Google 服务之间进行服务器到服务器的交互。对于此场景,您使用的是与应用(而非个别用户)关联的服务账号。您可以使用服务账号发出 API 请求,而无需用户直接参与。如需详细了解身份验证方法,请参阅 Google 的身份验证方法。
或者,您也可以将 Places API(新版)集成到 Android 或 iOS 移动应用中。如需详细了解如何使用 OAuth 以及如何管理不同部署环境的访问令牌,请参阅使用 OAuth 2.0 访问 Google API。
OAuth 范围
如需将 OAuth 与 Places API(新版)搭配使用,您必须为 OAuth 令牌分配以下范围:
https://www.googleapis.com/auth/cloud-platform
示例:在本地开发环境中尝试 REST API 调用
如果您没有生成令牌的环境,并且想要使用 OAuth 令牌试用 Places API(新版),请使用本部分中的过程。
此示例介绍了如何使用应用默认凭证 (ADC) 提供的 OAuth 令牌进行调用。如需详细了解如何使用 ADC 通过客户端库调用 Google API,请参阅使用客户端库进行身份验证。
请仅在开发或测试过程中使用以下 REST 过程,不要在生产环境中使用。
前提条件
在使用 ADC 发出 REST 请求之前,请使用 gcloud CLI 向 ADC 提供凭据:
安装并初始化
gcloudCLI。如需了解详情,请参阅安装 gcloud CLI。使用
gcloudCLI 进行身份验证:gcloud auth application-default login
完成登录流程,将您的凭据保存在 ADC 使用的本地凭据文件中。
如需了解详情,请参阅为本地开发环境设置 ADC。
发出 REST 请求
在此示例中,您传递了两个请求标头:
使用以下命令生成令牌,并在
Authorization标头中传递 OAuth 令牌:gcloud auth application-default print-access-token返回的令牌的作用域为
https://www.googleapis.com/auth/cloud-platform。在
X-Goog-User-Project标头中传递已启用结算功能的 Google Cloud 云项目的 ID 或名称。
如需使用 OAuth 令牌调用 Places API(新版),请完成以下步骤:
在以下代码示例中,将 PROJECT_ID 替换为您的 Google Cloud 项目 ID:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia" }' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "X-Goog-User-Project: PROJECT_ID" \ -H "X-Goog-FieldMask: places.displayName,places.formattedAddress" \ "https://places.googleapis.com/v1/places:searchText"
如需复制
curl命令,请点击代码示例中的复制。将该命令粘贴到终端窗口中,然后运行。
该响应是一个 JSON 对象:
{
"places": [
{
"name": "places/ChIJs5ydyTiuEmsR0fRSlU0C7k0",
"id": "ChIJs5ydyTiuEmsR0fRSlU0C7k0",
"types": [
"vegan_restaurant",
"vegetarian_restaurant",
"meal_takeaway",
"restaurant",
"food",
"point_of_interest",
"establishment"
],
"nationalPhoneNumber": "0433 479 794",
"internationalPhoneNumber": "+61 433 479 794",
"formattedAddress": "29 King St, Sydney NSW 2000, Australia",
"addressComponents": [
{
"longText": "29",
"shortText": "29",
"types": [
"street_number"
],
"languageCode": "en-US"
},
...
}
问题排查
如果您的请求返回错误消息,指出此 API 不支持最终用户凭据,请参阅排查 ADC 设置问题。
后续步骤
现在,您已启用 Places API(新版)并配置了 API 密钥,请参阅 Places API(新版)简介,详细了解如何使用 Places API(新版)。