设置 Places Aggregate API

本文档介绍了开始使用 Places Aggregate API 所需的步骤。

前提条件

此过程将指导您设置 Google Cloud 账号和启用了结算功能的 Google Cloud 项目。 您还应熟悉使用 Places Aggregate API 的收费方式。

  1. 如需查看用量结算和费用,请参阅 Places Aggregate API 的用量和结算。
  2. 验证您是否拥有 Google Cloud 账号。

    登录 Google Cloud 控制台
  3. 验证您是否拥有已启用结算功能的 Google Cloud 项目。

    前往“结算”页面
    1. 选择您的项目以打开结算页面。
    2. 在结算页面上:

      • 如果所选项目已启用结算功能,并且您只有一个结算账号,则系统会打开结算页面。
      • 如果您有多个结算账号,请选择转至关联的结算账号,查看与项目关联的结算账号的相关详情。
      • 如果已存在结算账号,但未与项目关联,系统会提示您将结算账号与项目关联。
      • 如果没有结算账号,或者您想创建新的结算账号,请选择管理结算账号以创建新的结算账号。如需了解详情,请参阅创建新的自助 Cloud Billing 账号。

启用 API

您必须先使用 Google Cloud 控制台或 gcloud 命令在 Google Cloud 项目中启用 Places Aggregate API,然后才能使用该 API。

如需启用 API,请执行以下操作:

控制台

  1. 在 Google Cloud 控制台中打开产品页面:

    启用 Places Aggregate API
  2. 点击启用按钮。

gcloud

gcloud services enable \
    --project "PROJECT" \
    "areainsights.googleapis.com"

详细了解 Google Cloud SDK、Cloud SDK 安装和以下命令:

获取 API 密钥,以便与 Places Aggregate API 搭配使用

Google Maps Platform 产品要求 API 调用包含 API 密钥或 OAuth 令牌,以防止未经授权的使用。 首先是 API 密钥过程。如需改用 OAuth 令牌,请参阅创建 OAuth 令牌。

API 密钥是具有唯一性的字母数字字符串,可将您的 Cloud Billing 账号和 Google Cloud 项目与您的应用向 Google Maps Platform API 或 SDK 发出的请求相关联。如需创建新密钥或向现有密钥添加 API 或 SDK,请按照以下说明操作。

控制台

  1. 前往 Google Maps Platform > 密钥和凭证页面。

    前往“密钥和凭证”页面

  2. 如果出现提示,请选择您的项目。
  3. 执行以下其中一项操作:

    • 创建新密钥:

      1. 点击创建凭据 > API 密钥。
      2. 在创建 API 密钥面板中,打开选择 API 限制列表。
      3. 清除此密钥不需要的所有 API,并确保 Places Aggregate API 保持选中状态。
      4. 点击创建。该面板会显示您的新 API 密钥。
    • 使用现有密钥:

      1. 点击密钥的名称。
      2. 在选择 API 限制列表中,选择 Places Aggregate API。
      3. 点击保存。

    在此处选择 API 并不会启用它。确保已在 Places Aggregate API 的 API 库页面上启用该 API。

  4. 如需稍后查看密钥字符串,请前往密钥和凭证页面,然后点击相应密钥的显示密钥。

如果控制台与这些步骤不同,请参阅 Google Cloud 文档中的创建 API 密钥和添加 API 限制。

gcloud

在以下命令中,将 PROJECT_ID 替换为您的项目 ID。

  • 创建新密钥:运行以下命令,并将 DISPLAY_NAME 替换为密钥的名称。

    gcloud services api-keys create \
        --project="PROJECT_ID" \
        --display-name="DISPLAY_NAME" \
        --api-target=service=areainsights.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=areainsights.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 请求

以下示例展示了返回旧金山价格适中的餐厅数量的请求。

  1. 点击下方代码中的 API_KEY,插入密钥的字母数字字符串:

    curl --location 'https://areainsights.googleapis.com/v1:computeInsights' \
    --header 'X-Goog-Api-Key: API_KEY' \
    --header 'Content-Type: application/json' \
    --data '{
       "insights":[
          "INSIGHT_COUNT"
       ],
       "filter":{
          "locationFilter":{
             "region":{
                "place":"places/ChIJIQBpAG2ahYAR_6128GcTUEo"
             }
          },
          "typeFilter":{
             "includedTypes":[
                "restaurant"
             ]
          },
          "priceLevels":[
             "PRICE_LEVEL_INEXPENSIVE"
          ]
       }
    }'
    
  2. 点击代码示例中的复制图标 选择复制图标。,复制 curl 命令。
  3. 将该命令粘贴到终端窗口中,然后运行该命令。

响应是一个 JSON 对象,格式如下:

{
  "count": "1025"
}

应用 API 密钥限制

Google 强烈建议您限制 API 密钥,仅将其用于需要它们的 API 和应用。限制 API 密钥可防止您的应用收到无正当理由的请求,从而提高应用安全性。API 密钥支持两种类型的限制:

  • API 限制用于指定可以使用 API 密钥调用哪些 SDK 和 API。在您创建密钥时,控制台和 gcloud CLI 要求至少设置一项 API 限制。
  • 应用限制用于指定哪些网站、IP 地址或应用可以使用 API 密钥。

如需详细了解如何应用限制,请参阅限制 API 密钥。

创建 OAuth 令牌

Places Aggregate API 支持使用 OAuth 2.0 进行身份验证。Google 支持常见的 OAuth 2.0 场景,例如 Web 服务器场景。

本文档介绍了如何在开发环境中将 OAuth 令牌传递给 Places Aggregate API 调用。如需详细了解如何在生产环境中使用 OAuth,请参阅 Google 的身份验证方法。

您可以直接通过向服务器发出 API 请求来调用 Google 地图 API,也可以使用客户端库来简化代码。Google 地图提供适用于 Go、Java、Node.js 和 Python 的客户端库。如需了解详情,请参阅 Places Aggregate API 客户端库。

OAuth 概览

您可以通过多种方式使用 OAuth 创建和管理访问令牌,具体取决于您的部署环境。

您可以使用 OAuth 2.0 在应用与 Google 服务之间进行服务器到服务器的交互。对于此场景,您使用的是与应用(而非个别用户)关联的服务账号。您可以使用服务账号发出 API 请求,而无需用户直接参与。如需详细了解身份验证方法,请参阅 Google 的身份验证方法。

或者,您也可以将 Places Aggregate API 集成到 Android 或 iOS 移动应用中。如需详细了解如何使用 OAuth 以及如何管理不同部署环境的访问令牌,请参阅使用 OAuth 2.0 访问 Google API。

OAuth 范围

如需将 OAuth 与 Places Aggregate API 搭配使用,您必须为 OAuth 令牌分配以下范围:

https://www.googleapis.com/auth/cloud-platform

示例:在本地开发环境中尝试 REST API 调用

如果您没有生成令牌的环境,并且想要使用 OAuth 令牌试用 Places Aggregate API,请按照本部分中的步骤操作。

此示例介绍了如何使用应用默认凭证 (ADC) 提供的 OAuth 令牌进行调用。如需详细了解如何使用 ADC 通过客户端库调用 Google API,请参阅使用客户端库进行身份验证。

请仅在开发或测试过程中使用以下 REST 过程,不要在生产环境中使用。

前提条件

在使用 ADC 发出 REST 请求之前,请使用 gcloud CLI 向 ADC 提供凭据:

  1. 安装并初始化 gcloud CLI。如需了解详情,请参阅安装 gcloud CLI。

  2. 使用 gcloud CLI 进行身份验证:

    gcloud auth application-default login
  3. 完成登录流程,将您的凭据保存在 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 Aggregate API,请完成以下步骤:

  1. 在以下代码示例中,将 PROJECT_NUMBER_OR_ID 替换为您的 Google Cloud 项目编号或 ID。

    以下示例展示了如何请求返回旧金山价格适中的餐厅数量:

    curl -X POST 'https://areainsights.googleapis.com/v1:computeInsights' \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_NUMBER_OR_ID" \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    --data '{
    "insights":[
      "INSIGHT_COUNT"
    ],
    "filter":{
      "location_filter":{
         "region":{
            "place":"places/ChIJIQBpAG2ahYAR_6128GcTUEo"
         }
      },
      "type_filter":{
         "included_types":[
            "restaurant"
         ]
      },
      "price_levels":[
         "PRICE_LEVEL_INEXPENSIVE"
      ]
    }
    }'
  2. 如需复制 curl 命令,请点击代码示例中的复制。

  3. 将该命令粘贴到终端窗口中,然后运行。

该响应是一个 JSON 对象:

{
  "count": "1025"
}

问题排查

如果您的请求返回错误消息,指出此 API 不支持最终用户凭据,请参阅排查 ADC 设置问题。

后续步骤

现在,您已启用 Places Aggregate API 并成功发出请求,请参阅发出您的第一个请求,详细了解如何使用该 API。