検証済み保護者リンク(VPL)
検証済み保護者リンク(VPL)は、プレイヤーが自分の保護者をプロダクトに招待できるようにする仕組みです。保護者が本人確認を完了すると、それ以降そのプレイヤーのコントロール(例えばスクリーンタイム)を確認し設定できるようになります。
VPLとは?
検証済み保護者リンクは、すでにプロダクトの利用を許可されているプレイヤーと保護者のあいだに見守りの関係を確立するものです。始めるかどうかはプレイヤーが決めます。プレイヤーがフローを開始し、保護者が承諾したかどうかにかかわらずプロダクトは動作し続けます。保護者を待つこともありません。これが同意との違いです。
ゲートではなくリンク
この違いが機能全体を規定するため、はっきり述べておきます。
検証可能な保護者の同意(VPC)はゲートです。プレイヤーが許可されていない操作に到達するとアクセスがブロックされ、信頼できる大人が承認するまで先に進めません。これはデータ処理に対する法的な同意です。
VPLはリンクです。保護者を待つこともなく、同意も与えられません。VPLが確立するのは法的な関係ではなく、見守りの関係です。
| VPC | VPL | |
|---|---|---|
| 正式名称 | 検証可能な保護者の同意 | 検証済み保護者リンク |
| きっかけ | サインアップ時にアクセス年齢未満である、またはGUARDIANが管理する機能に到達する | プレイヤーが自分の保護者を招待することを選ぶ |
| 開始する人 | 保護者。その間プレイヤーは待機する | プレイヤー。保護者はまだプロダクトと関係がない |
| 法的な位置づけ | データ処理に対する同意(COPPA、GDPR-Kなど) | 見守りの関係であり、データ処理に対する同意ではない |
| 強さ | 強い。承認されるまで機能またはプロダクトがブロックされる | 弱い。なくてもプロダクトは完全に動作する |
| 書き込む対象 | 同意された権限のenabledの値 | アローワンスとスクリーンタイムなどのコントロール別の状態。権限には書き込まない |
| 既定の状態 | 承認されるまでブロック | 未リンク。招待はオプトイン |
challenge.type | CHALLENGE_PARENTAL_CONSENTまたはCHALLENGE_SESSION_UPGRADE | CHALLENGE_PARENT_INVITE |
| 呼び出すエンドポイント | /age-gate/checkのあと/challenge/send-email、または/session/upgrade | /age-gate/checkのあと/challenge/invite-parent |
VPCとVPLは相互に排他的
VPCが何らかの形で適用されうるプレイヤーには、VPLは提供されません。
セッションがVPLの対象になるのは、次の両方が満たされる場合だけです。
- プレイヤーがその管轄区域のアクセス年齢以上であり、
/age-gate/checkがPASSを返してセッションが作成されている。 - そのセッションのどの権限も、プレイヤーの管轄区域と年齢において
managedBy: GUARDIANではない。
したがって、VPCが発動しうるケースはすべてVPLが拒否されるケースです。以下の表がその一覧です。
| プレイヤーの状況 | VPCの挙動 | VPLが利用できない理由 |
|---|---|---|
| 管轄区域のアクセス年齢未満 | /age-gate/checkがCHALLENGE_PARENTAL_CONSENTチャレンジを伴うCHALLENGEを返し、セッションは作成されない | セッションがなければ保護者を招待する対象が存在しないため、/challenge/invite-parentには到達しない |
| アクセス年齢未満でデータライトモードが有効 | 同じCHALLENGEレスポンスにchildLiteAccessEnabled: trueが付き、同意の完了を待つ間に独自の安全な既定体験でプレイヤーを受け入れる手がかりになる | やはりセッションがないため、招待には到達しない |
アクセス年齢以上だが、セッションにGUARDIAN管理の権限がある | その権限がロックされた状態でセッションが作成され、プレイヤーがその機能に到達したときに/session/upgrade経由でVPCが発動する | 招待はFEATURE_DISABLEDで拒否される。呼び出す前にセッションのpermissions[]を読んで自分で確認できる |
| その管轄区域と年齢ではプロダクトが禁止されている | /age-gate/checkが拒否する | セッションがない |
実際には、VPLが当てはまるのは、設定されている管轄区域にGUARDIAN管理の権限が存在しないプロダクトです。
1つのプロダクトが、プレイヤーごとに両方のフローを使うことも可能です。プロダクト単位の切り替えはなく、どちらのフローが適用されるかは、プレイヤーの管轄区域、年齢、プロダクトの権限セットからセッションごとに導かれます。一部の管轄区域にだけGUARDIAN管理の権限があるプロダクトでは、前者のプレイヤーはVPCを通り、後者のプレイヤーはVPLの対象になります。
リンクが与えるものと与えないもの
保護者がリンクされると、フロー中に保護者が設定した内容がセッションに保存されます。
- アローワンスは
GET /session/getでセッションとともに返されます。 - コントロール別の状態(例えばスクリーンタイムのスケジュール、つまり1日の制限、静かな時間、休憩リマインダー)は
GET /screentime/get-stateで返されます。
適用するのはあなたの責任です。k-IDは保護者が設定した状態を報告し、プロダクトがそれに従って動作します。
VPLがpermissions[]の許可内容を変えることはありません。値は年齢ゲートの時点のまま変わりません。プレイヤーに何を許可するかを変えるのはVPCだけの領域だからです。
なおmanagedByは、どちらのフローも書き込む値ではありません。これはプレイヤーの年齢と管轄区域の設定からレスポンスごとに導出されるため、同意が完了しても切り替わらず、プレイヤーが年齢を重ねることで自然に変わることがあります。実際に変わるものについては権限を参照してください。
セッションとkuid
/age-gate/checkから受け取るsessionIdは、プロダクト上の1人のプレイヤーを指すあなたの恒久的なハンドルです。リンク、リンク解除、再リンクをまたいで変わりません。自分のユーザーレコードはこれをキーにしてください。
kuidは、セッションが紐づく永続的な子どもプロファイルを指すk-IDの識別子です。k-IDは保護者がリンクを完了した時点でこれを割り当て、あとでリンクが解除されるとセッションから消去します。したがってkuidが存在することは、そのセッションに保護者がリンクされていることを意味します。
| 段階 | sessionId | kuid | セッションの状態 |
|---|---|---|---|
| 年齢ゲートのみ(初回) | 新規。以後は不変 | なし | managedBy: PLAYER、hasApproverEmail: false |
| 保護者がリンク | 同じ | 割り当てられ、Challenge.StateChangeウェブフックで届く | hasApproverEmail: true |
| リンク解除後 | 同じ | クリアされる | セッションはACTIVEのまま。権限と送信済みデータは保持される |
| 再リンク | 同じ | 同じプロファイルのkuidが戻る | セッションと送信済みデータは継続するが、保護者は何もない状態から始まり、コントロールを設定し直す |
プレイヤー1人につきセッションは1つとし、それを再利用してください。同じプレイヤーに2つ目のセッションを作ると、そのプレイヤーのデータが両方に分かれてしまいます。
提供状況
k-IDに連絡して、この機能を組織で有効化してもらってください。
次のステップ
- 検証済み保護者リンクのクイックスタートガイドでは、招待、キャンセル、リンク解除の呼び出しを一通り説明します。
Session.Unlinkは、どちらかの側がリンクを解除したことを知らせるウェブフックです。