会话
k-ID Session 包含当前玩家和位置的权限和年龄状态集合。每个玩家都需要一个活动的 Session。游戏应该查询活动的 Session 以确定功能在游戏中是否被允许或禁止。
什么是会话?
k-ID Session 是一个长期存在的对象,描述玩家在给定司法管辖区中在游戏中的权限。无论年龄如何,每个玩家都会获得一个长期存在的 k-ID Session,这是访问游戏所必需的。会话包含玩家在其玩游戏的司法管辖区中的权限。
对于儿童或青少年,会话可以由可信成人添加或删除权限,或由于生日而导致的年龄变化来修改。会话通常由游戏缓存在本地或云存储中。如果游戏实现了玩家账户,会话也可以与游戏中玩家的身份关联。
会话生命周期
k-ID Session 不会自动过期。它设计为缓存在与玩家关联的本地或云存储中。对于儿童和青少年,如果父母使用 Family Connect 添加或删除权限,或者玩家过生日并在建立会话的司法管辖区中"升级"到新的年龄类别,会话可能会发生变化。
由于 Session 设计为缓存,应该在每次游戏启动时使用 /session/get API 刷新它以获取已进行的任何更改。
会话结构
会话包含:
sessionId:会话的唯一标识符jurisdiction:创建会话的司法管辖区dateOfBirth:玩家的出生日期(如果已收集)ageStatus:玩家的年龄状态(DIGITAL_MINOR、DIGITAL_YOUTH或LEGAL_ADULT)permissions:具有启用/关闭状态的权限数组kuid:k-ID 用户 ID(如果玩家已通过 VPC)status:会话状态(ACTIVE或DELETED)etag:用于缓存验证的实体标签
会话示例:
{
"session": {
"ageStatus": "LEGAL_ADULT",
"dateOfBirth": "2005-04-15",
"etag": "6d9d24fccd428f845b355122799948dd0a52fc5d",
"jurisdiction": "US-CA",
"kuid": "123456",
"permissions": [
{
"enabled": true,
"managedBy": "PLAYER",
"name": "ai-generated-avatars"
},
{
"enabled": true,
"managedBy": "PLAYER",
"name": "text-chat-private"
}
],
"sessionId": "608616da-4fd2-4742-82bf-ec1d4ffd8187",
"status": "ACTIVE"
},
"status": "PASS"
}
获取会话
您可以通过两种方式检索会话:
/session/get:通过sessionId或kuid获取会话/age-gate/check:作为年龄门控流程的一部分创建或更新会话
/session/get API 通过使用 etag 参数支持条件请求。如果会话自上次请求以来没有更改,API 返回 HTTP 304(未修改),允许您避免不必要的数据传输。
缓存会话
Session 应该缓存在本地或云存储中,并且可以与玩家的账户关联。k-ID 会话只有在父母更新权限、儿童或青少年"升级"到下一个年龄类别,或者被父母或玩家删除时才会更改。
虽然建议游戏在每次游戏重启时从 /session/get API 刷新会话,但这并不是明确要求的。此外,k-ID Webhooks 可用于接收 Session 更新,而不是调用 /session/get API。如果 k-ID API 出现问题,刷新也可以推迟到以后。缓存的会话可用于管理权限,而无需连接到 k-ID API,同时解决任何问题。
会话和玩家身份
k-ID Session 可以被认为与玩家的 ID 强关联。如果游戏使用 ID 系统,Session 本身可以完全存储为 JSON 文档,存储与玩家的账户关联。
跨设备会话
在本地存储中缓存 Session 对象时,同一玩家的多个设备的本地存储中可以存在不同的会话。如果玩家在新设备上玩游戏,年龄门控会显示给玩家,如果之前需要,他们必须再次寻求同意。
为了避免必须多次请求同意,k-ID 会话可以存储在与玩家账户关联的云存储中,并在玩家在任何设备上登录时检索。在这种情况下,即使跨设备,玩家也只有一个 Session。
会话 Webhooks
在 Compliance Studio 中,您可以注册 Webhook 以接收来自 k-ID 的事件。这避免了需要调用 /session/get 来检索 k-ID 会话的罕见更改,除非玩家_升级_。
以下 webhook 事件与会话相关:
Session.ChangePermissions:在父母修改权限时发送Session.Delete:在会话被删除时发送
更多信息,请参阅 Webhooks。