发布前核对清单

在 Google Cloud Console 中的什么位置管理客户端 ID

高级计划客户端 ID 管理功能即将从支持门户迁移到 Cloud Console 上的 Google 地图“凭据”页面,位于服务帐号部分下方。

“凭据”页面上新的“客户端 ID”区域

注意:Google Maps Platform 高级计划不再开放注册,也不再提供给新客户。

确保您的团队有权访问必要资源

将您的 Google Maps Platform 高级计划欢迎邮件保存在安全的地方

重要意义:欢迎邮件是您的 Google Maps Platform 高级计划新手工具包,也可能是您的应急工具包。欢迎邮件中包含您的 Google Cloud Console 项目 ID、客户端 ID 和加密密钥等重要信息,这些是开始使用高级计划所需的信息。如果您遇到与任何 Google Maps API 相关的任何技术问题,此邮件还提供了与高级计划支持团队联系所需的所有信息。

使用 Google Cloud Console

重要意义:您可以通过 Google Cloud Console 获取使用情况报告新闻 Feed 和开发者资源等信息。更重要的是,如果您在开发或发布期间遇到任何技术问题,可以通过 Cloud Console 向高级计划支持团队提交支持案例

在发布之前,请为负责应用维护的所有开发者提供 Cloud Console 的访问权限。如果您遇到技术问题,访问 Cloud Console 将带来双重好处:既可以让您团队的成员与支持团队联系,又能让我们的支持团队与贵组织中相应的利益相关者联系。例如,如果我们检测到异常流量或行为(最终可能会中断您的应用),支持团队可能需要与贵组织联系。确保我们能够与相应开发者联系,这样可以防止您的服务出现意外中断。

订阅网上论坛的电子邮件通知

重要意义:为了确保您可以及时掌握各 Maps API 的最新开发和变更信息,我们建议您订阅以下一个或多个网上论坛的电子邮件通知:

订阅相关的通知 Feed

重要意义:为了确保您可以及时掌握各 Maps API 的最新开发和变更信息,我们建议您订阅相关的通知 Feed,详情请参阅常见问题解答

您也可以订阅下面的 RSS Feed 获得以下 Google Maps Premier API 公告:服务中断、更新和服务通知:

http://google.force.com/services/xml/MapsRSS

随时拨打支持热线

美国客户请拨打 1-877-355-5787,其他国家/地区的客户请拨打 +1 404-978-9282

重要意义:您可以拨打热线与支持团队联系。Cloud Console 中提供各个国家/地区的联系电话以及 PIN 码。尽管我们欢迎您通过支持热线向我们的团队报告技术问题,但只有在停机和服务不可用的情况下才可使用这种方式。请参阅此文档了解我们的优先级别定义。

优化应用

将防火墙配置为允许访问 Google Maps Platform 服务

重要意义:Google Maps Platform 服务使用多个网域,其中一些网域并不属于 *google.com 网域。如果您使用限制性防火墙,请务必允许访问每个 Maps API 服务所使用的网域。如果您的防火墙不允许访问这些网域,API 请求将失败,这可能会中断您的应用。请查看各 Maps API 所用网域的完整列表

我们不建议按 IP 地址管理防火墙限制,因为与这些网域关联的 IP 不是静态的。

注意:Google Maps Platform 服务分别为入站流量和出站流量使用端口 80 (http) 和 443 (https)。这些服务还需要 GET、POST、PUT、DELETE 和 HEAD 请求。将您的防火墙配置为允许通过这些端口传输流量和允许请求,具体取决于 API 和用例。

通过正确的 SSL 主机名加载 API

重要意义:通过 SSL 加载 Maps API 的应用应从 https://maps.googleapis.com(而非旧主机名 https://maps-api-ssl.google.com)进行加载。

授权 SSL 网域以与 Maps JavaScript API 配合使用

重要意义:将 Maps JavaScript API 与 SSL 网域配合使用时,必须明确授权您的 HTTPS 网域,以确保您的请求不会被拒。请注意,授权 http://yourdomain.com 不会自动启用与其对应的 SSL 网域 https://yourdomain.com。您可以在 Cloud Console 中滚动到客户端 ID 部分来查看已授权网域的列表。若要对结合使用客户端 API 与 SSL 网域时遇到的错误进行问题排查,请先检查页面上有无通过 HTTP 加载的元素。请参阅有关排查授权问题的指南。

选择正确的 API 版本

重要意义:在开发应用之前,请务必先了解哪些版本的 API 已弃用。在已弃用版本不可用之后,使用非弃用版本的 API 开发应用将节省您整体的开发时间和成本。

尤其要了解 Maps JavaScript API 使用的版本控制策略,以免在您的环境中意外使用错误版本的 API。

例如,尽管您的开发或测试环境可能适合使用实验性版本的 API,但是我们强烈反对在生产环境中使用实验性版本。我们的服务等级协议 (SLA) 仅适用于稳定版本的 API,因此,在生产环境中仅应使用稳定版本。

请参阅有关 Maps JavaScript API 版本的指南。

在客户端与服务器端设计之间进行选择

重要意义:选择客户端还是服务器端方式是关于架构的决策,对应用的稳定性和可伸缩性而言至关重要。总体来说,应使用服务器端方法对离线记录(即在应用外部)进行预处理和后期处理。或者,应使用客户端方法处理应用中与用户互动(即实时处理用户提交的请求)的部分。

在应使用客户端方法的情况下部署服务器端方法,这是导致超出配额并由此中断应用工作的首要原因。我们强烈建议您先查阅地理编码策略,然后再设计或发布依赖于服务器端调用的应用。

优化配额用量

重要意义:了解应用消耗配额(称为 Maps API 额度)的方式有助于您减少需要支付的费用。例如,如果您使用 Maps JavaScript API,对于每次地图加载,您的应用都会消耗 Maps API 额度。请参阅有关高级计划使用费率和用量限额的指南。

管理您的网络服务配额用量

重要意义:默认情况下,共享网络服务的配额设置为每天 10 万个免费请求。如需详细了解每个 API 的配额明细,请参阅用量限额文档。在 Cloud Console 中查看您的配额,或者在遇到配额方面的任何问题时提交支持案例

在发布服务之前,请务必了解与配额相关的各种错误(例如 OVER_QUERY_LIMITUser Rate Limit Exceeded),并在您的应用中设置正确的逻辑,以便在超出配额时响应此类错误。请先阅读用量限额常见问题解答。如需了解各个 API 返回的状态代码,请参阅相应 API 的开发者指南。例如,查看有关 Directions API 状态代码的指南。了解和实现这些概念将大大降低应用超出所允许配额、被 Google 阻止和/或中断的几率。

对您的应用执行负载测试

重要意义:对应用执行负载测试能够确保它可以处理大量请求,而不会超出您的 Maps API 配额。

使用实时 Google 服务进行负载测试将使您的应用超出允许的配额并被 Google 阻止。Google Maps Platform 可以处理大量请求。在 2012 的“追踪圣诞老人”活动期间,每秒处理了 160 万个请求。因此,不需要对 Google 服务进行负载测试。相反,对应用进行负载测试应确保应用可以应对大量的请求,而不超出您的 Maps API 配额。示例:如果您的 Geocoding API 配额为 20 QPS(每秒查询次数),对应用进行负载测试应确保应用可以处理 600 QPS,而向 Geocoding API 发送的请求不超过 20 QPS。

为了安全实现此目的,应仅使用模拟(假)API 执行负载测试,这种服务可以吸收大量请求并通过有效响应回复请求,而不会涉及 Google Maps Platform。因此,您可以对应用进行负载测试,而不会面临被 Google Maps Platform 阻止的风险。

请参阅此模拟 API 示例,它以小型 Google App Engine 应用的形式实现。您可以将此示例上传到自己的 App Engine 应用(应先在 appengine.google.com 上注册一个应用),并让您的应用将请求发送到该示例,而不是 maps.googleapis.com。

一般情况下,默认(免费)App Engine 配额应当足够对您的应用进行负载测试,并且远远超出 Maps API 网络服务的配额。请确保您的应用设置正确的 User-Agent 标头,以启用响应压缩。这对确保有效使用带宽非常关键,而能够有效使用带宽对于处理大量纯文本 (JSON/XML) 响应的 App Engine 应用尤为重要。如果您的 App Engine 应用需要更高的配额,您也可以启用结算功能,不过很少需要这样做。

将您的应用从标准许可迁移到高级计划许可

在 API 请求中加入您的客户端 ID 或 API 密钥

重要意义:您可以为自己的应用做的最重要事情之一是确保在您的 API 请求中加入客户端 ID (gme-yourclientid) 或 API 密钥(如下所示:AIzaSyBdVl-cTICSwYKrZ95SuvNw7dbMuDt1KG0)。客户端 ID 或 API 密钥可将您的请求标识为 Google Maps Platform 高级计划请求。

您必须在自己的应用中加入客户端 ID 或 API 密钥才能使用特定于高级计划的任何功能。若要获得技术支持和确保您的应用在我们的服务等级协议 (SLA) 涵盖范围内,您也需要加入您的客户端 ID 或 API 密钥。

对于大多数 API,您都可以选择使用客户端 ID 还是 API 密钥。您可以在欢迎邮件中找到自己的客户端 ID,欢迎邮件已发送给贵组织的主要联系人。您可以在 Google Cloud Console 中生成自己的 API 密钥。

如需了解详情,请参阅有关身份验证和授权的指南。

在 API 请求中加入 API 密钥或客户端 ID,但不可同时加入两者

重要意义:为了正确加载 Maps JavaScript API 或者向其他 Google Maps API 发送请求,您必须在请求中加入客户端 ID API 密钥,但不能同时加入两者。如果您选择使用客户端 ID,则必须移除所有 key 参数。如果您的请求同时包含客户端 ID 和密钥,您的应用可能会遇到意外行为或错误。

请参阅有关身份验证和授权的指南,全面了解如何按 API 为高级计划请求正确设置格式。

使用客户端 ID 时,授权您的网域以与 Maps JavaScript API 配合使用

重要意义:为了防止未获授权的网站使用您的客户端 ID,在使用 Maps JavaScript API 时,您需要通过我们的支持团队为将要使用您客户端 ID 的所有网站对应的所有网域进行授权(如果您使用 API 密钥而不是客户端 ID,不需要进行网址注册)。如果有权使用您客户端 ID 的网址与试图使用您客户端 ID 的网站之间不匹配,您的网站将无法通过您的客户端 ID 使用 API。您可以随时授权网域,因此,请确保在发布之前授权了您的所有网站对应的网域。

您可以通过以下方式查看已授权网域的列表:在 Cloud Console 中转到凭据页面,然后滚动到客户端 ID 部分。

对于授权问题,我们建议您先查阅有关排查授权问题的指南,然后再提交支持案例。

使用客户端 ID 时,使用通过私有加密密钥生成的签名签署网络服务请求

重要意义:您的私有加密密钥用于生成数字签名,此签名可以告知 Google 您的请求来自受信任的来源。如果您使用客户端 ID 进行身份验证,您在使用我们的网络服务 API 时需要在请求中添加数字签名。这会为您的请求增加一层安全防护,从而更好地保护与您的客户端 ID 关联的配额。您可以在欢迎邮件中找到您的加密密钥(例如 vNIXE0xscrmjlyV-12Nj_BvUPaw=),欢迎邮件已发送给贵组织的主要联系人。

注意:加密密钥用于生成签名,请勿将其作为签名本身附加到您的请求中。加密密钥与 ATM PIN 码类似,是一种用于访问帐号的身份验证方法,因此绝不应与不受信任的来源公开分享或向其显示该密钥。我们的服务器会拒绝未正确签署的高级计划网络服务请求,因此请务必确保您的应用在发布前正确签署请求。请参阅有关身份验证和授权的指南。

跟踪应用使用情况

重要意义:作为高级计划客户,您可以访问关于应用使用情况的详细报告,包括发出的请求、消耗的额度、返回的错误等。请参阅有关报告的指南。

channel 参数是一个可选参数,您可以利用此参数跟踪您客户端 ID 的使用情况,具体方法是为每个应用分配不同渠道。不需要向您的客户端 ID 注册 channel 参数。将 channel 参数添加到您的 API 请求后,每个渠道的使用情况结果将在实现 1-2 天后开始出现在支持门户的使用情况报告中。您可以自行决定在何处实现您的渠道以及如何汇总使用情况。请在发布之前确定您的应用是否应集成 channel 参数以跟踪应用使用情况。

channel 参数必须采用以下格式:

  • 必须是一个 ASCII 字母数字字符串。
  • 允许使用英文句点 (.)、下划线 (_) 和连字符 (-)。
  • channel 参数不区分大小写;大写、大小写混合及小写的 channel 参数将与对应的小写形式合并。例如,CUSTOMER 渠道的使用情况数据会与 customer 渠道的使用情况数据合并。

您最多可以为每个客户端 ID 实现 2000 个不同的渠道。

若要使用 channel 参数,请将此参数连同用于传递客户端 ID 的 client 参数一起包含在请求网址中。

请注意,channel 参数必须为按应用静态分配的值。此参数不得动态生成,也不得用于跟踪各个用户。