메인 콘텐츠로 이동

액세스를 위한 나이 확인

사용자에게 나이 게이트가 제시되고 사용자가 나이를 제공한 경우, 워크플로우의 다음 단계를 결정하기 위해 /age-gate/check에 대한 API 호출을 이제 수행해야 합니다. 플레이어의 나이가 개발자 포털에서 구성된 게임의 최소 나이보다 낮은 경우, 반환된 status 필드는 PROHIBITED가 됩니다. 이 시점에서 플레이어는 게임을 계속 진행하는 것이 차단되어야 합니다. 플레이어가 현재 위치에서 검증 가능한 부모 동의가 필요한 생년월일을 제공한 경우, status 필드는 CHALLENGE 값을 가지며 새로운 동의 도전에 대한 ID가 challengeID라는 필드에서 반환됩니다. 그런 다음 게임은 플레이어에게 부모 동의를 구하도록 요청해야 합니다. 마지막으로, status 값이 PASS인 경우, 플레이어는 게임을 계속할 수 있습니다.

Unreal C++로 세션 생성
void UKidWorkflow::StartKidSessionWithDOB(const FString& Location, const FString& DOB)
{
TSharedPtr<FJsonObject> JsonObject = MakeShareable(new FJsonObject());
JsonObject->SetStringField(TEXT("dateOfBirth"), DOB);
JsonObject->SetStringField(TEXT("jurisdiction"), Location);

FString ContentJsonString;
TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&ContentJsonString);
FJsonSerializer::Serialize(JsonObject.ToSharedRef(), Writer);

HttpRequestHelper::PostRequestWithAuth(BaseUrl + TEXT("/age-gate/check"), ContentJsonString,
AuthToken, [this](FHttpResponsePtr Response, bool bWasSuccessful)
{
if (bWasSuccessful)
{
TSharedPtr<FJsonObject> JsonResponse;
TSharedRef<TJsonReader<>> Reader =
TJsonReaderFactory<>::Create(Response->GetContentAsString());
if (FJsonSerializer::Deserialize(Reader, JsonResponse))
{
FString Status = JsonResponse->GetStringField(TEXT("status"));
if (Status == TEXT("CHALLENGE"))
{
TSharedPtr<FJsonObject> Challenge =
JsonResponse->GetObjectField(TEXT("challenge"));
FString ChallengeId =
Challenge->GetStringField(TEXT("challengeId"));
FString OneTimePassword =
Challenge->GetStringField(TEXT("oneTimePassword"));
FString QRCodeUrl =
Challenge->GetStringField(TEXT("url"));
SaveChallengeId(ChallengeId);

ShowConsentChallenge(ChallengeId, ConsentTimeoutSeconds, OneTimePassword,
QRCodeUrl, [this](bool bConsentGranted, const FString &SessionId)
{
if (bConsentGranted)
{
GetSessionPermissions(SessionId, TEXT(""));
ClearChallengeId();
}
else
{
HandleNoConsent();
}
});
}
else if (Status == TEXT("PASS"))
{
SessionInfo = JsonResponse->GetObjectField(TEXT("session"));
SaveSessionInfo();
}
else if (Status == TEXT("PROHIBITED"))
{
HandleProhibitedStatus();
}
}
}
});
}