跳到主要内容

会话

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_MINORDIGITAL_YOUTHLEGAL_ADULT
  • permissions:具有启用/关闭状态的权限数组
  • kuid:k-ID 用户 ID(如果玩家已通过 VPC)
  • status:会话状态(ACTIVEDELETED
  • 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 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 事件与会话相关:

更多信息,请参阅 Webhooks