Skip to content

Identity verification services

Hive Platform provides 'identity verification services' such as adult verification, parental consent, and identity verification to comply with related laws and regulations in South Korea. 'Identity verification services' can only be performed by users in South Korea who have a resident registration number or alien registration number and a mobile phone under their own name.

Adult verification

Games rated as not available to youths must be restricted so that minors under age 19 cannot use them, in accordance with relevant laws such as the Juvenile Protection Act. Hive Platform's adult verification feature checks whether a user is an adult through mobile phone identity verification and allows game access only when the user is confirmed to be an adult.

Adult verification is valid for one year from the initial verification time, and if the validity period is determined to have expired when the app launches, the re-verification process proceeds automatically.

Adult verification

When adult verification is set to Use in Hive Console, adult verification is automatically performed at game login without additional code implementation in Hive SDK. However, if adult verification fails, on mobile you need to implement an in-game guidance popup and block entry into the game so users are informed.

In addition, if you want to provide additional flows in the game based on the adult verification result value, you can implement features such as account creation limits by obtaining the Duplication Information (DI) hash value.

For detailed information about adult verification settings, see [Hive Console Guide > Authentication > Adult Verification > Enable].

Adult verification failure response

If a minor user under age 19 attempts adult verification and fails, ResultAPI.CANCELED(-6), ResultAPI.Code.AgeLimit(-1200067), and the message "Failed due to age restriction." are returned in the response when calling SignIn().

Based on this response, game companies can provide guidance messages to minor users in the game in any desired way.

Language Message
Korean 서비스 제한 연령으로 앱을 이용할 수 없습니다.
English You cannot use the app due to the age restriction for service.
Japanese サービスには年齢制限があるため、アプリを利用できません。
Chinese (Simplified) 由于年龄限制,不能使用应用。
Chinese (Traditional) 未符合使用服務的年齡限制,無法使用應用程式。
German Du kannst die Anwendung aufgrund der Altersbeschränkung des Dienstes nicht nutzen.
French Vous ne pouvez pas utiliser l'application en raison de l'âge limite du service.
Russian Использование приложения недоступно из-за возрастных ограничений.
Spanish No puede usar la aplicación debido a la restricción de edad para el servicio.
Portuguese Você não pode usar o aplicativo devido à restrição de idade do serviço.
Indonesian Aplikasi tidak bisa digunakan karena terdapat usia minimal untuk menggunakan layanan ini.
Thai คุณไม่สามารถใช้แอปได้เนื่องจากบริการนี้มีการจำกัดอายุ
Vietnamese Bạn không thể sử dụng ứng dụng do thuộc độ tuổi bị giới hạn sử dụng dịch vụ.
Italian Non è possibile utilizzare l'applicazione a causa del limite di età per l'uso del servizio.
Turkish Hizmetin yaş kısıtlaması nedeniyle uygulamayı kullanamazsınız.
Arabic لا يمكنك استخدام التطبيق بسبب القيود العمرية للخدمة.

Obtain DI hash value

After adult verification is complete, calling the SDK's AuthV4.getHashedDi method lets you obtain the DI hash value that can identify an adult-verified user. DI is provided in hashed form for security, and this value is linked with PlayerID after login, so it can be used as an adult-verified user identifier.

API Reference: hive.AuthV4.getHashedDi

using hive;    
AuthV4.getHashedDi((ResultAPI result, String hashedDi) => {    
    if (result.isSuccess()) {    
        // API call successful 
    } else {
        // NEED_INITIALIZE called before setup
        // INVALID_SESSION called before signIn
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
    }
});
#include "HiveAuthV4.h"

FHiveAuthV4::getHashedDi(FHiveAuthV4OnHashedDiDelegate::CreateLambda([this](const FHiveResultAPI& Result, FString& hashedDi) {
    if (Result.IsSuccess()) {
        // API call successful
    } else {
        // NEED_INITIALIZE called before setup
        // INVALID_SESSION called before signIn
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
    }
}));

API Reference: AuthV4::getHashedDi

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;    
using namespace hive;    
AuthV4::getHashedDi([=](ResultAPI result, string hashedDi) {    
    if (result.isSuccess()) {    
        // API call successful    
    } else {
        // NEED_INITIALIZE called before setup
        // INVALID_SESSION called before signIn
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
    }   
});

API Reference: AuthV4.getHashedDi

import com.hive.AuthV4    
import com.hive.ResultAPI    

AuthV4.getHashedDi(object : AuthV4.AuthV4GetHashedDiListener {    
    override fun onAuthV4GetHashedDi(result: ResultAPI, hashedDi: String?) {    
        if (result.isSuccess) {    
            // API call successful    
        } else {
            // NEED_INITIALIZE called before setup
            // INVALID_SESSION called before signIn
            // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
        } 
    }    
})

API Reference: AuthV4.getHashedDi

import com.hive.AuthV4;    
import com.hive.ResultAPI;    

AuthV4.getHashedDi(result, hashedDi -> {    
    if (result.isSuccess()) {    
        // API call successful    
    } else {
        // NEED_INITIALIZE called before setup
        // INVALID_SESSION called before signIn
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
    }
});

API Reference: AuthV4Interface.getHashedDi

import HIVEService

AuthV4Interface.getHashedDi() { result, hashedDi in    
    if result.isSuccess() {    
        // API call successful    
    } else {
        // NEED_INITIALIZE called before setup
        // INVALID_SESSION called before signIn
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
    }
}

API Reference: HIVEAuthV4:getHashedDi

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 getHashedDi: ^(HIVEResultAPI *result, NSString *> *hashedDi) {    
    if ([result isSuccess]) {    
        // API call successful    
    } else {
        // NEED_INITIALIZE called before setup
        // INVALID_SESSION called before signIn
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference adult verification library
    }
}];

Use DI hash value in account creation restriction policies

Adult verification allows users with multiple PlayerIDs to be verified with one mobile phone number. If you want to limit multiple verifications with the same phone number according to your game operation policy, you can do so by limiting the number of accounts that can be adult-verified per phone number. Game companies should store the DI hash value received from the adult verification result mapped with PlayerID. By checking the number of PlayerIDs already created based on the DI hash value, you can control game user entry according to your account creation restriction policy.

When a child or teenager uses a PC game, users under age 19 need parental consent according to the Juvenile Protection Act. Hive Platform verifies the user's age through mobile phone identity verification, and if the user is a child or teenager, it performs parental mobile phone identity verification once more by a parent or legal guardian to confirm game use. Parental consent is performed once after game installation.

Parental consent

Age verification

When the PC game is first launched, the user's age is verified through mobile phone identity verification. Based on the verification result, users are classified as child, teenager, or adult, and parental consent proceeds if the user is a child or teenager. The collected information and operation process differ by age.

Behavior by age

  • Child (under age 14)
    • Check whether parental consent is required and collect the guardian's email
    • Proceed with parental consent through the guardian's mobile phone identity verification, and at this time verify that the guardian is at least 19 years old
    • After parental consent is complete, a game usage guidance email is sent to the collected guardian email
  • Teenager (age 14 or older and under 19)
    • Display parental consent guidance and collect the guardian's email
    • Proceed with parental consent through the guardian's mobile phone identity verification, and at this time verify that the guardian is at least 19 years old
    • After parental consent is complete, a game usage guidance email is sent to the collected guardian email
  • Adult (age 19 or older)
    • Use the game immediately without additional procedures
Category Age criteria Whether parental consent proceeds Guardian email sent
Child Under age 14 Proceed Send game usage guidance email
Teenager Age 14 or older and under 19 Proceed Send game usage guidance email
Adult Age 19 or older Do not proceed Do not send

The date of birth of child or teenager users and guardian email information can be used in the game for customer support processing, checking game usage history, guardian notifications, and other purposes.

To retrieve parental consent information, call the getParentalConsentInfo() method after parental consent is complete. The getParentalConsentInfo() method returns the following information collected during the parental consent process.

  • Date of birth of child or teenager users
  • Guardian email address

API Reference: hive.AuthV4.getParentalConsentInfo

using hive;    

AuthV4.ParentalConsentInfo parentalConsentInfo = AuthV4.getParentalConsentInfo();    
#include "HiveAuthV4.h"

TOptional<FHiveParentalConsentInfo> ParentalConsentInfo = FHiveAuthV4::GetParentalConsentInfo();

API Reference: AuthV4::getParentalConsentInfo

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;    
using namespace hive;    

AuthV4::ParentalConsentInfo parentalConsentInfo = AuthV4::getParentalConsentInfo();    

Identity verification

Identity verification is a feature that verifies whether the user is the account owner by entering a 6-digit verification code sent by SMS or through the PASS app via a mobile carrier (SKT, KT, LGU+, budget carriers) subscribed under the user's name.

Hive SDK supports calling the identity verification API at any time the game wants, regardless of game login status. Accordingly, you can configure identity verification to run when using specific services such as entering the shop or entering a dungeon. You can use it according to your game operation policy, such as checking age when entering the in-game shop to restrict minors from purchasing probability-based items, or not displaying ads to users below a certain age group.

Identity verification

Response information

When Hive SDK calls the identity verification API, it returns the phone number, date of birth, and DI hash value after verification is complete. Because the identity verification API can be called at any time the game wants, it is difficult to map it to the PlayerID obtained at login time. Therefore, the DI hash value from identity verification cannot be used for user identification purposes.

  • Phone number
  • Date of birth
  • DI hash value (Hashed DI)

If you fail to receive the result normally after calling the API, call the identity verification API again to retry.

API Reference: hive.AuthV4.showIdentityVerification

using hive;

AuthV4.showIdentityVerification((ResultAPI result, Identity identity) => {    
    if (result.isSuccess()) {    
        // API call successful
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE called before setup
        // CANCELED window closed before receiving verification result
        // RESPONSE_FAIL abnormal response
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
    }
});
#include "HiveAuthV4.h"

FHiveAuthV4::showIdentityVerification(FHiveAuthV4OnIdentityVerificationDelegate::CreateLambda([this](const FHiveResultAPI& Result, FHiveIdentity& identity) {
    if (Result.IsSuccess()) {
        // API call successful
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE called before setup
        // CANCELED window closed before receiving verification result
        // RESPONSE_FAIL abnormal response
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
    }
}));

API Reference: AuthV4::showIdentityVerification

#include <HIVE_SDK_Plugin/HIVE_CPP.h>    
using namespace std;    
using namespace hive;

AuthV4::showIdentityVerification([=](ResultAPI result, Identity identity) {    
    if (result.isSuccess()) {    
        // API call successful
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE called before setup
        // CANCELED window closed before receiving verification result
        // RESPONSE_FAIL abnormal response
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
    }   
});

API Reference: AuthV4.showIdentityVerification

import com.hive.AuthV4    
import com.hive.ResultAPI    

AuthV4.showIdentityVerification(object : AuthV4.AuthV4ShowIdentityVerificationListener {    
    override fun onAuthV4ShowIdentityVerification(result: ResultAPI, identity: Identity?) {    
        if (result.isSuccess) {    
            // API call successful
            // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
        } else {
            // NEED_INITIALIZE called before setup
            // CANCELED window closed before receiving verification result
            // RESPONSE_FAIL abnormal response
            // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
        } 
    }    
})

API Reference: AuthV4.showIdentityVerification

import com.hive.AuthV4;    
import com.hive.ResultAPI;    

AuthV4.showIdentityVerification(result, identity -> {    
    if (result.isSuccess()) {    
        // API call successful
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE called before setup
        // CANCELED window closed before receiving verification result
        // RESPONSE_FAIL abnormal response
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
    }
});

API Reference: AuthV4Interface.showIdentityVerification

import HIVEService

AuthV4Interface.showIdentityVerification() { result, identity in    
    if result.isSuccess() {    
        // API call successful
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE called before setup
        // CANCELED window closed before receiving verification result
        // RESPONSE_FAIL abnormal response
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
    }
}

API Reference: HIVEAuthV4:showIdentityVerification

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 showIdentityVerification: ^(HIVEResultAPI *result, HIVEIdentity *> *identity) {    
    if ([result isSuccess]) {    
        // API call successful
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE called before setup
        // CANCELED window closed before receiving verification result
        // RESPONSE_FAIL abnormal response
        // DEVELOPER_ERROR, CommonLibraryMissing failed to reference identity verification library
    }
}];

DI hash value summary for adult verification and identity verification

Category Adult verification Identity verification
DI hash value Can identify users and map with PlayerID Cannot be mapped because it is only an identity verification result value
Characteristics Can be used as an identifier because it is linked with the login session Do not use as an identifier because it can be called regardless of login status (for one-time verification use)

When using identity verification and adult verification together, or identity verification and device management together

When identity verification and adult verification, or identity verification and device management, are used together in the app, the identity verification procedure through the PASS app is performed only once for user convenience. However, when using this feature, you must call identity verification before login. Because adult verification and device management are performed during the login process, they are determined to be the same user and the verification process is skipped. If you call the identity verification API after login, it is difficult to determine whether the users attempting adult verification, device management, and identity verification are the same, so PASS app verification will be required separately.

When used together, you can apply them in the following order.

  • Call identity verification API -> Launch PASS app -> Verify identity -> Check adult status -> Login complete
  • Call identity verification API -> Launch PASS app -> Verify identity -> Device management enrollment -> Login complete
  • Call identity verification API -> Launch PASS app -> Verify identity -> Check adult status -> Device management enrollment -> Login complete

When setting identity verification + adult verification

Because PASS verification is already performed during identity verification, only age determination proceeds in the adult verification step.

  • Adult age 19 or older: login completed normally
  • Children and teenagers under age 19: return a login error or display a 'Service unavailable' popup message

Identity verification + adult verification

When setting identity verification + device management

Because PASS app verification is already performed during identity verification, you can proceed faster by skipping the one-time password (OTP) verification procedure required for device management enrollment.

Identity verification + device management

When setting identity verification + adult verification + device management

Because PASS app verification is already performed during identity verification, the adult verification and device management procedures are simplified.

  • Adult verification: only age determination proceeds
    • Adult age 19 or older: login complete
    • Children and teenagers under age 19: return a login error or display a 'Service unavailable' popup message
  • Device management: proceed quickly by skipping the OTP verification procedure required for enrollment

Identity verification + adult verification + device management