Google 建议您在管理和运行应用时遵循以下最佳实践。
保护 API 密钥
您需要 API 密钥才能使用我们的在线服务,Google 会使用该密钥来计量您的用量。我们建议您限制自己的 API 密钥,以防止未经授权的使用。
API 密钥限制的类型
API 密钥限制有两种类型,您可以同时使用这两种限制。
限制类型 | 将密钥使用限制为 |
---|---|
API 限制 | 特定 API。 |
应用限制 | 特定 IP 地址、网站或应用。 |
API 密钥限制建议
我们建议您为以下情况委托单独的 API 密钥。
场景 | 建议 |
---|---|
您的后端游戏服务器会调用 Playable Locations API 来检索可玩的位置。 | 为密钥配置两项限制:
|
应用的 Android 版本会调用 Maps SDK for Unity 来检索地理位置数据。 | 配置具有应用限制的密钥,以便仅允许从应用的 Android 版本进行调用。 |
您应用的 iOS 版本会调用 Maps SDK for Unity API 来检索地理位置数据。 | 配置具有应用限制的密钥,以便仅允许从应用的 iOS 版本进行调用。 |
如需了解详情,请参阅 API 安全性最佳实践。
设置 API 密钥限制
- 访问 Google Cloud 控制台中的凭据面板。
- 选择您要设置限制的 API 密钥。系统随即会显示 API 密钥属性页面。
- 在密钥限制下,选择应用限制标签页,然后从四种应用限制类型中选择一种。
限制类型 说明 HTTP 引荐来源 接受来自您提供的一系列网站的请求。 IP 地址 接受来自您提供的一系列网络服务器 IP 地址的请求。 Android 应用 添加您的软件包名称和 SHA-1 签名证书指纹,以仅限您的 Android 应用使用。 iOS 应用 接受来自 iOS 应用(具有您提供的软件包标识符)的请求。 - 在密钥限制下,选择 API 限制标签页,然后选择您要将 API 密钥限制为仅可使用的 API。
- 点击保存。
支持 API 密钥更新
请确保您的基础架构可以更新整个服务堆栈中的 API 密钥。这样,如果您的 API 密钥被盗,您的游戏可以恢复,并且您需要及时续订。
为每个应用使用单独的密钥,因此您可以轻松地在一个密钥中换一个密钥,而不会影响其他应用。
游戏服务器安全建议
如果 Playable Locations API 服务器因任何原因而发生中断,那么在恢复在线状态(即多个游戏服务器同时尝试重新连接)时会出现问题。此类 QPS 峰值可能会使服务器进入 DoS 模式,这会通过阻止传入流量加剧这种情况。
为了缓解这种情况,Google 要求您在游戏服务器上实现二进制指数退避算法。这是一种系统性的方法,可以留出连接重试的间隔时间。具体来说,您需要实现一种算法,使其在重新连接尝试失败后等待 N 秒再重试。如果下一次尝试失败,您的算法会将等待期加倍,然后重试。如果下一次尝试失败,您的算法会再次将等待期加倍,然后重试。每次尝试后,您需要继续将等待期加倍,直到最后一次尝试成功。
处理 HTTP 返回状态代码
您应该为某些(而不是全部)HTTP 返回代码实现二进制指数退避算法。
- 400 秒
- 这些是通常不会恢复的客户端错误,因此重试那些会产生此错误代码的失败请求不会起作用。您应该在测试期间捕获这些类型的错误。
- 429
- 当 API 配额开始用尽时,就会出现资源耗尽错误。如需查看项目的 API QPS 限制,请访问 Google API 配额。
- 500 秒
- 这些是服务器端错误,指数退避算法对此类错误最有用。