Geocoding API 支持使用 OAuth 2.0 进行身份验证。Google 支持常见的 OAuth 2.0 用例,如网络服务器用例。
本文档介绍了如何在开发环境中将 OAuth 令牌传递给 Geocoding API 调用。如需了解如何在生产环境中使用 OAuth,请参阅 Google 身份验证。
准备工作
在开始使用 Geocoding API 之前,请确保您的项目已关联结算账号并且启用了 Geocoding API。我们建议创建多个项目所有者和结算管理员,确保您的团队中始终有人担任这些角色。如需了解详情,请参阅在 Cloud 控制台中进行设置。
OAuth 简介
您可以通过多种方式使用 OAuth 创建和管理访问令牌,具体取决于您的部署环境。
例如,Google OAuth 2.0 系统支持服务器到服务器的互动,例如您的应用与 Google 服务之间的互动。对于这种情况,您需要使用服务账号,这种账号属于您的应用,而不是某个最终用户。您的应用会代表服务账号调用 Google API,因此用户不会直接参与。如需详细了解身份验证方法,请参阅 Google 身份验证。
或者,您也可以在 Android 或 iOS 移动应用中使用 Geocoding API。如需有关将 OAuth 与 Geocoding API 搭配使用的基本信息(包括有关管理不同部署环境的访问令牌的信息),请参阅使用 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.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
创建令牌时使用的默认作用域。
示例:在本地开发环境中尝试 REST API 调用
如果您想使用 OAuth 令牌试用 Geocoding API,但没有设置用于生成令牌的环境,则可以使用本部分中的步骤进行调用。
以下示例介绍了如何使用 Application Default Credentials (ADC) 提供的 OAuth 令牌进行调用。如需了解如何使用 ADC 通过客户端库调用 Google API,请参阅使用客户端库进行身份验证。
前提条件
您必须先使用 Google Cloud CLI 向 ADC 提供凭据,然后才能使用 ADC 发出 REST 请求:
- 如果您尚未创建项目并启用结算功能,请按照在 Google Cloud 控制台中进行设置中的步骤操作。
- 安装并初始化 gcloud CLI。
在本地机器上运行以下
gcloud
命令以创建凭据文件:gcloud auth application-default login
- 系统会显示登录屏幕。在您登录后,您的凭据会存储在 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 或名称。如需了解详情,请参阅在 Cloud 控制台中进行设置。
以下示例使用 OAuth 令牌调用 Geocoding API:
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/v4beta/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
问题排查
如果您的请求返回有关此 API 不支持最终用户凭据的错误消息,请参阅用户凭据无法正常使用。