임베디드 흐름
CDK는 단일 인터페이스 내에서 완전한 Verifiable Parental Consent (VPC) 흐름을 처리하는 End-to-End 위젯을 제공하며, 연령 게이트, VPC, 데이터 고지, 권한 및 기본 설정을 모두 하나의 원활한 경험으로 다룹니다.
End-to-End 위젯이란 무엇인가요?
End-to-End 위젯은 단일 인터페이스에서 완전한 규정 준수 흐름을 처리하는 포괄적인 솔루션으로, 연령 게이트, VPC, 데이터 고지, 권한 및 기본 설정을 모두 하나의 원활한 경험으로 다룹니다. 이 위젯은 부모가 자녀의 기기나 자신의 기기에서 사용할 수 있어 동의 프로세스에 최대한의 유연성을 제공합니다.
위젯 URL 생성
/widget/generate-e2e-url API를 호출하여 완전한 VPC 흐름을 처리하는 end-to-end 위젯 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을 사용하여 웹사이트나 앱에 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를 언제 닫을지 결정하려면 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의 제품 구성에 따라 관리할 권한
- 부모 동의 Challenge: 사용자가 미성년자로 판단되는 경우 신뢰할 수 있는 성인 승인을 위한 Challenge가 생성됩니다
- Automatic age assurance: 제품이 해당 관할권에 Automatic age assurance가 활성화된 경우, 신고된 연령이 부모 동의를 건너뛸 만큼 높은 플레이어는 세션이 발급되기 전에 위젯 내에서 신고한 연령을 증명하도록 요청받습니다(얼굴 연령 추정 또는 ID 문서).
특정 흐름은 관할권과 Compliance Studio의 제품 구성에 따라 다릅니다.
Automatic age assurance가 엔드 투 엔드 위젯 내에서 트리거되면, 세션은 연령 게이트 직후가 아니라 플레이어가 검증을 통과한 후에 생성됩니다. 흐름이 완료되면 Widget.AgeGate.Result 이벤트가 여전히 발생하며 PASS인 경우 sessionId가 포함됩니다. 이벤트가 도착할 때까지 흐름을 진행 중으로 간주하세요.
VPC 구현에 대한 자세한 내용은 빠른 시작 가이드를 참조하세요.