最佳制作做法

Google 建议您在管理和运行应用时遵循以下最佳实践。

保护 API 密钥

您需要 API 密钥才能使用我们的在线服务,Google 会使用该密钥来计量您的用量。我们建议您限制自己的 API 密钥,以防止未经授权的使用。

API 密钥限制的类型

API 密钥限制有两种类型,您可以同时使用这两种限制。

限制类型将密钥使用限制为
API 限制 特定 API。
应用限制 特定 IP 地址、网站或应用。

API 密钥限制建议

我们建议您为以下情况委托单独的 API 密钥。

场景建议
您的后端游戏服务器会调用 Playable Locations API 来检索可玩的位置。 为密钥配置两项限制:
  • API 限制:仅允许调用 Playable Locations API。
  • 应用限制:仅允许来自后端游戏服务器的 IP 地址的调用。
应用的 Android 版本会调用 Maps SDK for Unity 来检索地理位置数据。 配置具有应用限制的密钥,以便仅允许从应用的 Android 版本进行调用。
您应用的 iOS 版本会调用 Maps SDK for Unity API 来检索地理位置数据。 配置具有应用限制的密钥,以便仅允许从应用的 iOS 版本进行调用。

如需了解详情,请参阅 API 安全性最佳实践

设置 API 密钥限制

  1. 访问 Google Cloud 控制台中的凭据面板
  2. 选择您要设置限制的 API 密钥。系统随即会显示 API 密钥属性页面。
  3. 密钥限制下,选择应用限制标签页,然后从四种应用限制类型中选择一种。
    限制类型 说明
    HTTP 引荐来源 接受来自您提供的一系列网站的请求。
    IP 地址 接受来自您提供的一系列网络服务器 IP 地址的请求。
    Android 应用 添加您的软件包名称和 SHA-1 签名证书指纹,以仅限您的 Android 应用使用。
    iOS 应用 接受来自 iOS 应用(具有您提供的软件包标识符)的请求。
  4. 密钥限制下,选择 API 限制标签页,然后选择您要将 API 密钥限制为仅可使用的 API。
  5. 点击保存

支持 API 密钥更新

请确保您的基础架构可以更新整个服务堆栈中的 API 密钥。这样,如果您的 API 密钥被盗,您的游戏可以恢复,并且您需要及时续订。

为每个应用使用单独的密钥,因此您可以轻松地在一个密钥中换一个密钥,而不会影响其他应用。

游戏服务器安全建议

如果 Playable Locations API 服务器因任何原因而发生中断,那么在恢复在线状态(即多个游戏服务器同时尝试重新连接)时会出现问题。此类 QPS 峰值可能会使服务器进入 DoS 模式,这会通过阻止传入流量加剧这种情况。

为了缓解这种情况,Google 要求您在游戏服务器上实现二进制指数退避算法。这是一种系统性的方法,可以留出连接重试的间隔时间。具体来说,您需要实现一种算法,使其在重新连接尝试失败后等待 N 秒再重试。如果下一次尝试失败,您的算法会将等待期加倍,然后重试。如果下一次尝试失败,您的算法会再次将等待期加倍,然后重试。每次尝试后,您需要继续将等待期加倍,直到最后一次尝试成功。

处理 HTTP 返回状态代码

您应该为某些(而不是全部)HTTP 返回代码实现二进制指数退避算法。

400 秒
这些是通常不会恢复的客户端错误,因此重试那些会产生此错误代码的失败请求不会起作用。您应该在测试期间捕获这些类型的错误。
429
当 API 配额开始用尽时,就会出现资源耗尽错误。如需查看项目的 API QPS 限制,请访问 Google API 配额
500 秒
这些是服务器端错误,指数退避算法对此类错误最有用。