メインコンテンツに移動

年齢ゲート

年齢ゲートは、年齢制限のあるコンテンツ、機能、またはサービスへのアクセスを許可する前に、ユーザーの年齢を収集および確認するために使用されるメカニズムです。k-ID APIは、年齢ゲートを管理し、プレイヤーの年齢と管轄区域に基づいて必要なアクションを決定するエンドポイントを提供します。

カスタム年齢ゲートUIを構築していますか?

年齢スライダー、日付ピッカー、同意フロー、アクセシビリティに関するデザイン推奨事項については、UXガイドラインを参照してください。

年齢ゲート要件の取得

プレイヤーの管轄区域で/age-gate/get-requirementsを呼び出して、以下を決定します:

  • 年齢ゲートを表示する必要があるかどうか(shouldDisplay
  • 承認されている年齢収集方法(approvedAgeCollectionMethods
  • 年齢閾値:
    • digitalConsentAge: プレイヤーがデジタル同意を提供できる最小年齢
    • civilAge: プレイヤーが法的成人と見なされる法的/契約年齢
    • minimumAge: プラットフォーム/ゲームにアクセスするために必要な最小年齢
  • 年齢保証が必要かどうか(ageAssuranceRequired

リクエストの例

GET /api/v1/age-gate/get-requirements?jurisdiction=US-CA
Authorization: Bearer your-api-key

レスポンスの例

{
"shouldDisplay": true,
"ageAssuranceRequired": true,
"digitalConsentAge": 13,
"civilAge": 18,
"minimumAge": 0,
"approvedAgeCollectionMethods": [
"date-of-birth",
"age-slider",
"platform-account"
]
}

プラットフォーム年齢シグナルを含める

ゲームにプラットフォームから報告された年齢シグナル(Apple iOS、Google Play、Xbox、Meta Horizon、またはk-ID)がある場合、クエリパラメータとして含めてください:platformNameplatformAgeLowplatformAgeHighplatformCategoryplatformDeclarationTypeplatformVerificationId。k-IDは入力を収集する前にこのシグナルを shouldDisplayageAssuranceRequired の判定に反映します — 確認済みの成人シグナルがあれば、年齢ゲートを完全にスキップし、確認済み年齢権限を即座に満たせます。サポートされているプラットフォームとフィールド形式の完全なリストは、プラットフォーム年齢シグナルを参照してください。

GET /api/v1/age-gate/get-requirements?jurisdiction=US-CA&platformName=apple-ios&platformAgeLow=18&platformAgeHigh=25&platformDeclarationType=governmentIDChecked
Authorization: Bearer your-api-key

アクセスのための年齢チェック

プレイヤーの年齢を収集した後、生年月日と管轄区域で/age-gate/checkを呼び出して、次のステップを決定します:

  • PROHIBITED: プレイヤーの年齢がゲームの最小年齢未満です。プレイヤーは続行をブロックされる必要があります。
  • CHALLENGE: セッションを作成する前にプレイヤーがチャレンジを完了する必要があります。challenge.type を確認して、どのチャレンジが返されたかを判断してください:
    • CHALLENGE_PARENTAL_CONSENT: 申告された年齢が低すぎるため、親の同意なしにプレイヤーは進めません。信頼できる大人が承認するまで、プレイヤーはセッションを取得できません。
    • CHALLENGE_AGE_GATE_AGE_ASSURANCE: 申告された年齢は親の同意なしに進むのに十分高いものの、プロダクトで Automatic age assurance が有効化されているため、セッションが発行される前にプレイヤーは申告した年齢を証明する必要があります(通常は顔スキャンまたはID書類によって)。
  • PASS: プレイヤーはゲームに続行でき、レスポンスでセッションが返されます。

リクエストの例

POST /api/v1/age-gate/check
Content-Type: application/json
Authorization: Bearer your-api-key

{
"jurisdiction": "US-CA",
"dateOfBirth": "2015-04-15"
}

CHALLENGEレスポンスの例

{
"status": "CHALLENGE",
"challenge": {
"challengeId": "683409f1-2930-4132-89ad-827462eed9af",
"oneTimePassword": "ABC123",
"type": "CHALLENGE_PARENTAL_CONSENT",
"url": "https://family.k-id.com/authorize?otp=ABC123"
}
}

PASSレスポンスの例

{
"status": "PASS",
"session": {
"sessionId": "608616da-4fd2-4742-82bf-ec1d4ffd8187",
"ageStatus": "LEGAL_ADULT",
"dateOfBirth": "2005-04-15",
"jurisdiction": "US-CA",
"permissions": [...],
"status": "ACTIVE"
}
}

プラットフォーム年齢シグナルを含める

リクエストボディに platformAgeSignal オブジェクトを単独で、または dateOfBirth/age/kuid と一緒に含めることができます。確認済みシグナルは別の確認手順なしに確認済み年齢権限を満たし、セッションに ageVerification を記録します。確認されていないシグナルでも、年齢矛盾検出と保守的な年齢解決に活用されます。サポートされているプラットフォームと確認済み宣言タイプは、プラットフォーム年齢シグナルを参照してください。

POST /api/v1/age-gate/check
Content-Type: application/json
Authorization: Bearer your-api-key

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

Automatic age assurance

Automatic age assurance は、申告された年齢が親の同意をスキップできるほど高いプレイヤーを検証するためのオプションのプロダクト設定です。有効化されると、k-ID は本来 PASS になるレスポンスを傍受し、代わりに CHALLENGE_AGE_GATE_AGE_ASSURANCE チャレンジを返します。プレイヤー自身が顔年齢推定またはID書類による検証を完了し(信頼できる大人は関与しません)、検証通過後に k-ID がセッションを作成します。

機能の有効化

Automatic age assurance の有効化は2段階のプロセスです:

  1. 組織レベルの設定(allowAutomaticAgeAssurance)を k-ID が付与する必要があります。この設定はデフォルトでオフであり、k-ID のみが切り替え可能です。組織で有効化するには k-ID サポートにお問い合わせください。
  2. 設定がオンになると、プロダクトの管理者は Compliance Studio のプロダクトのエンジンオーバーライドから、管轄区域ごとに Automatic age assurance のオン/オフを切り替えられます。

トリガー条件

/age-gate/check は、以下のすべてが当てはまる場合に CHALLENGE_AGE_GATE_AGE_ASSURANCE チャレンジを返します:

  1. 対象管轄区域のプロダクトで Automatic age assurance が有効化されている。
  2. プレイヤーの申告年齢が、本来であれば親の同意なしにプロダクトにアクセスできる年齢以上である。これは通常、管轄区域のデジタル同意年齢ですが、プロダクトで設定されたより高い minimum-age や必須権限のしきい値によって引き上げられる場合があります。
  3. リクエストとともに、デジタル同意年齢以上を満たす信頼できる プラットフォーム年齢シグナル が提供されていない。検証済みのプラットフォームシグナル(例:declarationType: governmentIDChecked を持つ apple-ios)はすでに十分な保証を提供するため、チャレンジをバイパスします。

本来親の同意が必要となる申告については、既存の CHALLENGE_PARENTAL_CONSENT フローが使用されます。Automatic age assurance は親の同意のパスを変更しません。

CHALLENGE_AGE_GATE_AGE_ASSURANCE レスポンスの例

{
"status": "CHALLENGE",
"challenge": {
"challengeId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"type": "CHALLENGE_AGE_GATE_AGE_ASSURANCE",
"url": "https://family.k-id.com/age-gate/verify?token=..."
}
}

CHALLENGE_PARENTAL_CONSENT とは異なり、レスポンスには oneTimePassword は含まれません。url は信頼できる大人の同意ポータルではなくセルフサービスの検証ページを指します。検証を完了するのはプレイヤー自身であるため、URL には署名されたトークンが含まれており、iframe として直接埋め込むことができます。

チャレンジの処理

  1. チャレンジタイプを検出し、allow="camera;payment;publickey-credentials-get;publickey-credentials-create" を持つ iframe に challenge.url を埋め込みます。
  2. レスポンシブな UI 更新のため、iframe からの Verification.Result DOM メッセージをリッスンします(Verification.Result を参照)。
  3. Challenge.StateChange Webhook、または /challenge/get-status のポーリングで結果をサーバー側で確認します。PASS の場合、data.sessionId には新しく作成されたセッションが含まれます。
  4. sessionId を使って /session/get を呼び出し、プレイヤーの完全な権限を取得します。

コードサンプル付きの解説は、カスタム年齢ゲートのクイックスタートガイドの 自動年齢保証チャレンジの処理 を参照してください。

プラットフォーム年齢カテゴリAPIの使用

一部のプラットフォームは、特定の年齢や生年月日ではなく、年齢カテゴリを返すAPIを提供しています。たとえば、Meta HorizonはGetAgeCategory APIを提供しており、CH(子供、10-12歳)、TN(ティーン、13-17歳)、またはAD(成人、18歳以上)などのカテゴリを返します。

シグナルを直接送信

ほとんどの統合では、変換ステップをスキップして、platformAgeSignal/age-gate/check に直接送信できます(/age-gate/get-requirements にはクエリパラメータとして送信)。k-ID はカテゴリから年齢範囲への変換をサーバー側で処理し、確認済みシグナルの宣言タイプを反映し、1回の呼び出しで年齢矛盾検出を実行します。プラットフォーム年齢シグナルを参照してください。独自のUIを駆動するために事前に年齢範囲が必要な場合、下記の変換エンドポイントは引き続き有用です。

プラットフォームの年齢カテゴリAPIを使用する場合、カテゴリをプレイヤーの管轄区域の年齢範囲に変換し、その年齢範囲をk-IDの年齢ゲートシステムで使用する必要があります。

例:Meta HorizonのGetAgeCategory APIの使用

以下は、Meta Horizonの年齢カテゴリAPIをk-IDと統合する方法の完全な例です:

  1. Meta Horizonから年齢カテゴリを取得
// Meta Horizon Unity SDKの例
var ageCategory = PlatformService.GetAgeCategory();
// 戻り値: "CH"(子供、10-12歳)、"TN"(ティーン、13-17歳)、または"AD"(成人、18歳以上)
  1. カテゴリを年齢範囲に変換
POST /api/v1/age-gate/get-platform-age-range
Content-Type: application/json
Authorization: Bearer your-api-key

{
"jurisdiction": "US-CA",
"platform": {
"name": "meta-horizon",
"category": "TN"
}
}

レスポンス:

{
"ageLow": 13,
"ageHigh": 17
}
  1. 最低年齢を年齢ゲートチェックで使用

ageLow値(この例では13)をageパラメータとして使用して/age-gate/checkを呼び出します:

POST /api/v1/age-gate/check
Content-Type: application/json
Authorization: Bearer your-api-key

{
"jurisdiction": "US-CA",
"age": 13
}

これにより、プラットフォームの確認済み年齢カテゴリが、管轄区域固有の要件を維持しながら、k-IDの年齢ゲートシステムで使用できる特定の年齢値に適切に変換されます。

生年月日の形式

生年月日の形式と要件の情報については、コアコンセプトセクションの年齢ゲートを参照してください。

デフォルト権限

/age-gate/get-requirementsshouldDisplay = falseで応答する場合、年齢ゲートを表示する必要はなく、プレイヤーの生年月日は定義されません。この場合、ゲームは/age-gate/get-default-permissionsを呼び出して管轄区域のデフォルト権限を取得することでSessionを作成します。これは、この管轄区域では年齢に基づいて権限が変わらないことを意味します。ゲーム内の一部の機能は、管轄区域に基づいてすべての年齢層に対して禁止される可能性があるため、ゲームは機能を有効にできるかどうかを確認するためにSession権限を参照する必要があります。