メインコンテンツに移動

埋め込みフロー

CDKは、単一のインターフェース内で完全な検証可能な親の同意(VPC)フローを処理するエンドツーエンドウィジェットを提供し、年齢ゲート、VPC、データ通知、権限、設定を1つのシームレスなエクスペリエンスでカバーします。

エンドツーエンドウィジェットとは?

エンドツーエンドウィジェットは、単一のインターフェースで完全なコンプライアンスフローを処理する包括的なソリューションで、年齢ゲート、VPC、データ通知、権限、設定を1つのシームレスなエクスペリエンスでカバーします。このウィジェットは、子供のデバイスまたは親自身のデバイスで親が使用でき、同意プロセスに最大の柔軟性を提供します。

ウィジェットURLの生成

/widget/generate-e2e-url APIを呼び出して、完全なVPCフローを処理するエンドツーエンドウィジェットURLを作成します。これにより、ユーザーが年齢収集と親の同意プロセスを完了するための一意のURLが返されます。

リクエストの例

POST /api/v1/widget/generate-e2e-url
Content-Type: application/json
Authorization: Bearer your-api-key

{
"jurisdiction": "US-CA"
}

設定フラグ

オプションのflagsパラメータを使用すると、スキップするフローの部分をカスタマイズできます:

  • skipDataNotices: データ通知と同意収集をスキップ
  • skipVerification: 確認ステップをスキップ
  • skipPermissions: 権限管理をスキップ
  • skipPreferences: 設定をスキップ

プラットフォーム年齢シグナルの送信(オプション)

ゲームがすでにプラットフォーム(Apple iOS、Google Play、Xbox、Meta Horizon、または以前のk-ID確認)からの年齢データを持っている場合、platformAgeSignalとしてリクエストボディに含めてください。ウィジェットはこのシグナルを内部の年齢ゲートチェックに転送するため、確認済みシグナルが成人を示す場合は年齢ゲートをスキップでき、別の確認手順なしに確認済み年齢権限を満たし、シグナルとプレイヤーが自己申告した年齢の矛盾を検出できます。

POST /api/v1/widget/generate-e2e-url
Content-Type: application/json
Authorization: Bearer your-api-key

{
"jurisdiction": "US-CA",
"platformAgeSignal": {
"name": "apple-ios",
"ageLow": 18,
"ageHigh": 25,
"declarationType": "governmentIDChecked"
}
}

サポートされているプラットフォームとフィールド形式については、プラットフォーム年齢シグナルを参照してください。

レスポンスの例

{
"id": "7854909b-9124-4bed-9282-24b44c4a3c97",
"url": "https://family.k-id.com/widget?token=eyJhbGciOiJFUzM4NCIs..."
}

ウィジェットの埋め込み

返されたURLを使用して、Webサイトまたはアプリにiframeを作成します。ユーザーはこのインターフェースを通じて年齢収集と信頼できる大人の同意プロセスを完了し、利用可能な方法が管轄区域の要件に自動的に適応します。

<div id="vpc-container">
<iframe
id="vpc-widget"
src="WIDGET_URL"
width="100%"
height="600"
frameborder="0"
allow="camera;payment;publickey-credentials-get;publickey-credentials-create">
</iframe>
</div>

イベントの処理

ウィジェットは、リッスンできるJavaScriptイベントを発行します:

イベント構造の詳細については、Widget.AgeGate.Challengeを参照してください。

UIを閉じる

ウィジェットUIをいつ閉じるかを判断するには、Widget.ExitReviewイベントをリッスンしてください。このイベントは、ユーザーが「完了」ボタンをクリックしたときに発行され、フローが完了し、iframeを閉じるか非表示にする必要があることを示します。

window.addEventListener('message', (event) => {
if (!event.origin.endsWith('.k-id.com')) {
return;
}

const message = event.data;

if (message.eventType === 'Widget.AgeGate.Challenge') {
if (message.data.status === 'PASS') {
// 親が同意を承認 - アクセスを許可
console.log('Consent approved:', message.data.sessionId);
grantAccess(message.data.sessionId);
} else if (message.data.status === 'FAIL') {
// 親が同意を拒否 - アクセスを制限
console.log('Consent denied');
restrictAccess();
}
}

if (message.eventType === 'Widget.ExitReview') {
// ユーザーが「完了」をクリックしたときにウィジェットUIを閉じる
closeWidget();
}
});

ウィジェットが処理する内容

ウィジェットは自動的に以下を処理します:

  • 年齢収集: 管轄区域に適した年齢収集方法
  • データ通知: Compliance Studioでのプロダクト設定に応じて受け入れるデータ通知
  • 権限: Compliance Studioでのプロダクト設定に応じて管理する権限
  • 親の同意チャレンジ: ユーザーが未成年者と判断された場合、信頼できる大人の承認のためにチャレンジが作成されます
  • Automatic age assurance: プロダクトが管轄区域で Automatic age assurance を有効化している場合、申告された年齢が親の同意をスキップできるほど高いプレイヤーは、セッションが発行される前にウィジェット内で申告した年齢を証明するよう求められます(顔年齢推定またはID書類)。

特定のフローは、管轄区域とCompliance Studioでのプロダクト設定によって異なります。

Automatic age assurance によるセッション作成タイミング

Automatic age assurance がエンドツーエンドウィジェット内でトリガーされる場合、セッションは年齢ゲート完了直後ではなく、プレイヤーが検証を通過した後に作成されます。フロー完了時に Widget.AgeGate.Result イベントは引き続き発火し、PASS の場合は sessionId を含みます。イベントが届くまでは、フローは進行中として扱ってください。

VPCの実装の詳細については、クイックスタートガイドを参照してください。