Route Optimization API 支持使用 OAuth 2.0 进行身份验证。 Google 支持常见的 OAuth 2.0 场景,例如针对网络服务器的场景。
本文档介绍了如何将 OAuth 令牌传递给您的 开发环境中。有关在 production 环境,请参阅 Google 的身份验证。
准备工作
在开始使用 Route Optimization API 之前,您需要 项目(具有结算账号并且启用了 Route Optimization API)实现。我们建议创建多个 具有 Project Owner 和 Billing Administrator 角色,以便确保始终有人担任这些角色 可供您的团队使用如需了解详情,请参阅在 Cloud 控制台中进行设置。
关于 OAuth
您可以通过多种方式使用 OAuth 创建和管理访问令牌,具体取决于您的部署 环境
例如,Google OAuth 2.0 系统支持服务器与服务器之间的交互,比如 应用与 Google 服务之间的通信。对于这种情况,您需要一个服务账号 是属于您的应用程序而不是某个最终用户的账号。您的 应用会代表服务账号调用 Google API,这样用户就不必直接参与。 如需详细了解身份验证方法,请参阅 在 Google 中进行身份验证。
或者,您也可以在 Android 或 iOS 移动应用中使用 Route Optimization API。 有关将 OAuth 与 Route Optimization API 搭配使用的一般信息,包括有关管理 不同的部署环境的访问令牌,请参阅 使用 OAuth 2.0 访问 Google API。
OAuth 范围简介
要将 OAuth 与 Route Optimization API 搭配使用,必须为 OAuth 令牌分配以下范围:
https://www.googleapis.com/auth/cloud-platform
示例:在本地开发环境中尝试 REST API 调用
如果您想使用 OAuth 令牌试用 Route Optimization API,但没有环境 设置来生成令牌,您可以按照本部分中的步骤进行调用。
本示例介绍如何使用 应用默认凭据 (ADC) 进行呼叫。如需了解如何使用 ADC 通过客户端库调用 Google API,请参阅 使用客户端库进行身份验证。
前提条件
在使用 ADC 发出 REST 请求之前,请先使用 Google Cloud CLI 以向 ADC 提供凭据:
- 如果您还没有项目,请按照 在 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.
- 将请求正文的内容类型为
application/json
。
以下示例使用 OAuth 令牌调用 Route Optimization API:
curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID :optimizeTours' \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ --data-binary @- << EOM { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.79581, "longitude": -122.4218856 } } ] } ], "vehicles": [ { "startLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 }, "endLocation": { "latitude": 37.73881799999999, "longitude": -122.4161 } } ], "globalStartTime": "2023-01-13T16:00:00-08:00", "globalEndTime": "2023-01-14T16:00:00-08:00" } } EOM
问题排查
如果您的请求返回有关此 API 不支持最终用户凭据的错误消息, 请参阅用户凭据无效。