跳到主要内容

挑战

当儿童寻求访问游戏或游戏功能的同意时,会创建一个 Consent Challenge。一旦经过验证的可信成人与同意挑战关联,挑战会作为访问请求显示给 k-ID Family Connect 中的可信成人。

什么是挑战?

同意挑战代表玩家对父母同意的请求。当玩家的年龄在当前司法管辖区需要可验证父母同意 (VPC) 时,k-ID 会创建一个挑战,必须由可信成人批准,玩家才能访问游戏或功能。

挑战创建

在以下情况下会自动创建挑战:

挑战 ID 在 API 响应中返回,应该由游戏存储在本地存储或与玩家关联的云存储中。

挑战信息

创建挑战时,API 返回:

  • challengeId:挑战的唯一标识符
  • oneTimePassword:父母可以输入的密码以访问同意门户
  • url:可以呈现为二维码以便移动访问的 URL

同意挑战窗口应显示二维码、一次性密码和输入字段,允许玩家输入可以授予同意的父母或监护人的电子邮件地址。

Challenge

挑战状态

显示同意挑战窗口后,游戏应该等待直到挑战成功完成。强烈建议使用 Webhooks,监听 Challenge.StateChange 事件。作为后备选项,可以通过使用挑战 ID 定期调用 /challenge/get-status API 进行轮询。

挑战状态可以是:

  • PASS:可信成人已授予同意
  • FAIL:请求被拒绝
  • PENDING:挑战仍在等待响应
  • POLL_TIMEOUT:已达到轮询超时(使用带超时的轮询时)

通知可信成人

有几种方法可以通知可信成人有关同意挑战:

二维码和一次性密码

挑战响应包括可以呈现为二维码的 URL 和一次性密码。父母可以使用任一方法直接访问同意门户。

电子邮件通知

如果玩家提供了父母或监护人的电子邮件地址,游戏应该将此电子邮件地址作为参数传递给 /challenge/send-email API,该 API 会向该地址发送预配置的电子邮件,其中包含将父母引导到 Family Connect 的链接,他们可以在那里批准。此电子邮件的配置选项在 Compliance Studio 中提供。

游戏必须确定等待同意授予多长时间,以及如果该时间到期该怎么办。持续时间的选择可以是短的(10 分钟)或更长的(24 小时或更长时间)。

在此期间可能会对 /challenge/get-status API 进行多次调用。在对 /challenge/get-status 的调用之间,应该有至少 5 秒的延迟。此外,/challenge/get-status 可能返回 HTTP 代码 429。游戏在处理 429 响应时应实施适当的重试逻辑。

玩家在等待同意时可以做什么?

对于某些游戏,在父母授予同意之前完全阻止玩家继续游戏是合适的,窗口应该是模态的。在其他游戏中,允许未成年玩家在拒绝访问之前继续一定时间,同时请求可信成人同意,这可能是合理的。在这种情况下,在等待可信成人同意时,游戏有责任避免收集有关玩家的数据,或提供对可能需要同意的其他功能的访问。

当从 /age-gate/check 返回 CHALLENGE 状态时,返回的挑战 ID 应该在挑战活动时存储在本地存储中。当游戏启动时存在活动挑战会引导游戏显示之前的相同同意挑战窗口。从本地存储检索挑战 ID 后,应该调用 /challenge/get API 以检索有关当前挑战的信息,包括一次性密码和二维码 URL,并且应该再次向用户显示挑战窗口。

挑战过期和基于时间的身份验证

虽然同意挑战本身不会过期,但生成的基于时间的身份验证方法会过期(例如,OTP、电子邮件链接)。k-ID 实施基于时间的身份验证机制,以确保安全性,同时保持可用性。

一次性密码 (OTP)

每个挑战创建一个唯一的 OTP,父母可以使用它来访问同意门户。这些 OTP:

二维码 URL

挑战响应包括可以呈现为二维码以便移动访问的 URL。此 URL:

  • 包含嵌入的 OTP
  • 与 OTP 一起过期(1 小时)
  • 为父母提供无缝的移动体验

电子邮件链接过期

使用 /challenge/send-email API 发送同意请求时:

  • 电子邮件链接在两周后过期
  • 链接包含加密签名的令牌
  • 过期的链接需要生成新的电子邮件请求

最佳实践

实施 k-ID 的基于时间的身份验证时:

  1. 主动监控过期,而不是被动监控
  2. 在凭据过期时实施优雅降级
  3. 提供关于超时状态的清晰用户反馈
  4. 在测试环境中彻底测试超时场景
  5. 为边缘情况做计划,例如在刷新操作期间网络中断

获取可信成人电子邮件地址

如果授予同意,父母的电子邮件地址在 /challenge/get-status 响应的 approverEmail 字段中返回。这可以由游戏存储,用于未来的客户服务案例。

测试挑战

可以在 API 中测试可信成人同意,而无需通过 Family Connect 中的可信成人同意流程。为此,您可以调用 /test/set-challenge-status 来设置同意挑战的状态。您可以将状态分配给 PASSFAIL。您还必须将 agejurisdiction 作为正文的一部分传递。可选地,您可以传递一个电子邮件以在 approverEmail 字段中返回。使用相同 challengeId/challenge/get-status 的下一次调用返回您分配的信息。这允许您在游戏中快速测试可信成人同意场景。