架构考虑
Server->Server
所有的 k-ID API 调用都需要包含一个有效的 k-ID API 密钥的 Authorization 头。为了防止 k-ID API 密钥被外部暴露,k-ID API 应该采用服务器到服务器的方式调用。
游戏的可靠性和缓存
k-ID API 具有高度可用性。但建议在进行服务器到服务器调用时,游戏实现常见的可靠性和容错模式(例如熔断器)来增强对 k-ID API 的调用可靠性。由于所有玩家都需要一个 Session
,游戏应实现一种机制,确保在 k-ID 服务发生问题时,新玩家和现有玩家不会被阻止访问。
缓存的 Session
Session
应该被缓存到本地或云存储中,并与玩家的账户关联。k-ID 的 Session 仅在家长更新权限、孩子或青少年晋升到下一个年龄分类,或家长或玩家删除 Session 时才会发生变化。虽然建议游戏每次重启时都从 /session/get
API 刷新 Session,但这不是强制要求。此外,k-ID Webhook 提供了一种获取 Session
信息更新的方式,可以替代 /session/get
。如果 k-ID API 出现问题,刷新操作也可以推迟。缓存的 Session 可以在问题解决前,用于管理权限,而不必连接到 k-ID API。
k-ID Sessions 和玩家身份
k-ID 的 Session
可以被视为与玩家的身份强关联。如果游戏使用身份系统,Session
本身可以作为一个完整的 JSON 文档存储,并与玩家账户关联。
Session.ChangePermissions 和 Session.Delete Webhook
在 k-ID 发布者门户中,您可以注册一个 Webhook 来接收来自 k-ID 的事件。这可以避免频繁调用 /session/get
来获取 k-ID Session 的少量变化。
默认 Sessions
对于新玩家,游戏服务器可以缓存每个司法管辖区的默认权限,以便在 k-ID 服务出现问题时为新玩家提供合理的默认权限。/age-gate/get-default-permissions
API 会返回每个司法管辖区的默认权限。默认权限包括为特定游戏配置的所有设置,并可以作为备用方案,因为这些设置不由家长管理。缓存的默认 k-ID 权限也可以通过其他渠道(例如远程配置)传递给游戏。
面部年龄估算下载大小
k-ID 的面部年龄估算通过 iframe 显示,适用于在 Web View 或外部浏览器窗口中使用。iframe 引用来自 CDN 的资产,这些资产在本地执行年龄估算,包括支持的 JavaScript 库和机器学习模型权重。总资产大小约为 8 MB。为了减少在应用内部署 k-ID 时的下载大小,可以通过将支持库和模型权重打包到应用程序二进制文件中并在设备上本地提供这些资源,来避免下载。