架构注意事项
服务器到服务器
所有 k-ID API 调用都需要在授权头中包含一个有效的 k-ID API 密钥。为了保护 k-ID API 密钥不 被外部暴露,建议以服务器到服务器的方式调用 k-ID API。
游戏的可靠性和缓存
k-ID API 具有高可用性,但建议游戏在调用 k-ID API 时实现常见的可靠性和容错模式(例如断路器)。由于所有玩家都需要一个 Session
,游戏应实现一种机制,确保在极少数情况下 k-ID 服务出现问题时,新玩家和现有玩家不会受到阻碍。
会话缓存
Session
应该被缓存到本地或云存储中,并可以与玩家账户相关联。k-ID 会话仅在家长更新权限、儿童或青少年年龄提升到下一个年龄类别,或者会话被家长或玩家删除时发生变化。建议游戏在每次重新启动时通过 /session/get
API 刷新会话,但这不是强制要求的。此外,还可以使用 k-ID Webhook 来处理会话信息更新,而无需调用 /session/get
。如果 k-ID API 出现问题,可以推迟刷新操作。在问题解决期间,缓存的会话可以用于管理权限,而无需连接 k-ID API。
k-ID 会话与玩家身份
k-ID Session
可以被视为与玩家的 ID 强关联。如 果游戏使用 ID 系统,会话本身可以作为 JSON 文档完全存储在与玩家账户相关联的存储中。
Session.ChangePermissions 和 Session.Delete Webhook
在 k-ID 厂商门户中,您可以注册 Webhook以接收来自 k-ID 的事件。这避免了除玩家“年龄提升”以外,为了检索 k-ID 会话的不频繁更改而调用 /session/get
的需求。
默认会话
对于新玩家,可以在游戏服务器中缓存每个司法辖区的默认权限,以便在 k-ID 服务出现问题时,为新玩家提供合理的默认设置。/age-gate/get-default-permissions
API 返回每个司法辖区的默认权限。默认权限包括为特定游戏配置的所有设置,并可作为回退选项,因为这些设置不受家长管理。缓存的默认 k-ID 权限也可以通过其他渠道(例如远程配置)传递到游戏中。
面部年龄估算下载大小
k-ID 面部年龄估算出现在一个适用于 Web 视图或外部浏览器窗口的 iframe 中。iframe 引用来自 CDN 的资产,这些资产在本地运行以执行年龄估算,包括支持的 JavaScript 库和机器学习模型权重。所有资产总共约 8 MB。为了在应用内部署 k-ID 时减少下载大小,可以通过将支持库和模型权重打包到应用程序的二进制文件中,并直接从设备本地提供这些资源来避免下载。