设置 Geocoding API

欧洲经济区 (EEA) 开发者

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

Google Maps Platform 产品要求 API 调用包含 API 密钥或 OAuth 令牌,以防止未经授权的使用。您可以选择与您的部署环境匹配的设置过程。

创建 OAuth 令牌

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

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

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

OAuth 概览

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

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

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

OAuth 范围

如需将 OAuth 与 Geocoding API 搭配使用,您必须为 OAuth 令牌分配正确的范围。Geocoding API 支持以下范围:

  • https://www.googleapis.com/auth/maps-platform.geocode - 与所有 Geocoding API 方法搭配使用。
  • https://www.googleapis.com/auth/maps-platform.destinations - 仅与 SearchDestinations 搭配使用,用于目的地和到达查询。
  • https://www.googleapis.com/auth/maps-platform.geocode.address - 仅与 GeocodeAddress 搭配使用,用于正向地理编码。
  • https://www.googleapis.com/auth/maps-platform.geocode.location - 仅与 GeocodeLocation 搭配使用,用于反向地理编码。
  • https://www.googleapis.com/auth/maps-platform.geocode.place - 仅与 GeocodePlace 搭配使用,用于地点地理编码。

您还可以对所有 Geocoding API 方法使用常规 https://www.googleapis.com/auth/cloud-platform 范围。该范围在开发期间非常有用,因为它是您使用 gcloud CLI 创建令牌时的默认范围。

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

如果您没有生成令牌的环境,并且想要尝试使用 OAuth 令牌调用 Geocoding 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 令牌调用 Geocoding API,请完成以下步骤:

  1. 在以下代码示例中,将 PROJECT_ID 替换为您的 Google Cloud 项目 ID:

    curl -X GET -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
    
  2. 如需复制 curl 命令,请点击代码示例中的复制。

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

问题排查

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