コンテンツにスキップ

本人確認サービス

Hiveプラットフォームは、大韓民国の関連法令およびコンプライアンス遵守のため、成人認証、保護者同意、本人認証などの『本人確認サービス』を提供します。『本人確認サービス』は、大韓民国で住民登録番号または外国人登録番号を保有し、本人名義の携帯電話を持つユーザーのみ実施できます。

成人認証

青少年利用不可等級のゲームは、『青少年保護法』など関連法令に基づき、満19歳未満の未成年者が利用できないよう制限される必要があります。Hiveプラットフォームの成人認証機能は、携帯電話の本人認証を通じて利用者が成人かどうかを確認し、成人と確認された場合にのみゲームへ接続できるよう提供します。

成人認証は初回認証時点から1年間有効で、アプリ実行時に有効期限が満了したと判断されると自動的に再認証手順が進行します。

成人認証

Hiveコンソールで成人認証を使用に設定すると、Hive SDKに別途コードを追加実装しなくてもゲームログイン時に成人認証が自動実行されます。ただし、成人認証に失敗した場合、モバイルではユーザーが認識できるようゲーム内案内ポップアップの実装と、ゲームに入場させない処理が必要です。

また、成人認証の結果値に応じてゲーム内で追加フローを提供したい場合、重複加入確認情報(DI)ハッシュ値の取得を通じて、アカウント作成制限などの機能を実装できます。

成人認証設定の詳細は、[Hiveコンソールガイド > 認証 > 成人認証 > 使用設定]を参照してください。

成人認証失敗時の応答

満19歳未満の未成年ユーザーが成人認証を試行して認証に失敗した場合、SignIn()呼び出し時の応答値としてResultAPI.CANCELED(-6)ResultAPI.Code.AgeLimit(-1200067)"Failed due to age restriction."メッセージが返されます。

ゲーム会社は、該当応答を基にゲーム内の未成年ユーザーへ希望する方式で案内メッセージを提供できます。

言語 文言
韓国語 서비스 제한 연령으로 앱을 이용할 수 없습니다.
英語 You cannot use the app due to the age restriction for service.
日本語 サービスには年齢制限があるため、アプリを利用できません。
中国語(簡体字) 由于年龄限制,不能使用应用。
中国語(繁体字) 未符合使用服務的年齡限制,無法使用應用程式。
ドイツ語 Du kannst die Anwendung aufgrund der Altersbeschränkung des Dienstes nicht nutzen.
フランス語 Vous ne pouvez pas utiliser l'application en raison de l'âge limite du service.
ロシア語 Использование приложения недоступно из-за возрастных ограничений.
スペイン語 No puede usar la aplicación debido a la restricción de edad para el servicio.
ポルトガル語 Você não pode usar o aplicativo devido à restrição de idade do serviço.
インドネシア語 Aplikasi tidak bisa digunakan karena terdapat usia minimal untuk menggunakan layanan ini.
タイ語 คุณไม่สามารถใช้แอปได้เนื่องจากบริการนี้มีการจำกัดอายุ
ベトナム語 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ụ.
イタリア語 Non è possibile utilizzare l'applicazione a causa del limite di età per l'uso del servizio.
トルコ語 Hizmetin yaş kısıtlaması nedeniyle uygulamayı kullanamazsınız.
アラビア語 لا يمكنك استخدام التطبيق بسبب القيود العمرية للخدمة.

DIハッシュ値の取得

成人認証が完了した後、SDKのAuthV4.getHashedDiメソッドを呼び出すと、成人認証済みユーザーを識別できるDIハッシュ値を取得できます。DIはセキュリティのためにハッシュ処理されて提供され、この値はログイン後にPlayerIDと連携されるため、成人認証ユーザーの識別子として使用できます。

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 signIn 前に呼び出し
        // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
    }
});
#include "HiveAuthV4.h"

FHiveAuthV4::getHashedDi(FHiveAuthV4OnHashedDiDelegate::CreateLambda([this](const FHiveResultAPI& Result, FString& hashedDi) {
    if (Result.IsSuccess()) {
        // API呼び出し成功
    } else {
        // NEED_INITIALIZEがセットアップ前に呼び出されました
        // INVALID_SESSION signIn 前に呼び出し
        // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
    }
}));

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 signIn 前に呼び出し
        // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
    }   
});

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がセットアップ前に呼ばれました
            // INVALID_SESSION signIn 前に呼び出し
            // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
        } 
    }    
})

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はセットアップ前に呼び出されました
        // INVALID_SESSION signIn 前に呼び出し
        // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
    }
});

API Reference: AuthV4Interface.getHashedDi

import HIVEService

AuthV4Interface.getHashedDi() { result, hashedDi in    
    if result.isSuccess() {    
        // API call successful    
    } else {
        // NEED_INITIALIZEはセットアップ前に呼ばれました
        // INVALID_SESSION signIn 前に呼び出し
        // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
    }
}

API Reference: HIVEAuthV4:getHashedDi

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 getHashedDi: ^(HIVEResultAPI *result, NSString *> *hashedDi) {    
    if ([result isSuccess]) {    
        // API call successful    
    } else {
        // NEED_INITIALIZEはセットアップ前に呼び出されました
        // INVALID_SESSION signIn 前に呼び出し
        // DEVELOPER_ERROR, CommonLibraryMissing 成人認証ライブラリ参照失敗
    }
}];

アカウント作成制限ポリシーへのDIハッシュ値活用

成人認証では、複数のPlayerIDを保有するユーザーが1つの携帯電話番号で認証できます。ゲーム運営ポリシーに応じて同じ携帯電話番号での複数認証を制限したい場合は、電話番号ごとに成人認証可能なアカウント数を制限して防止できます。ゲーム会社は、成人認証結果として受け取ったDIハッシュ値とPlayerIDをマッピングして保存しておく必要があります。DIハッシュ値を基準に、すでに作成されたPlayerID数を確認し、アカウント作成制限ポリシーに従ってゲームユーザーの進入を制御できます。

保護者同意

子どもまたは青少年がPCゲームを利用する場合、『青少年保護法』に基づき満19歳未満のユーザーは保護者の同意が必要です。Hiveプラットフォームでは携帯電話の本人認証を通じてユーザーの年齢を確認し、ユーザーが子どもまたは青少年であれば、親または法定代理人など保護者の携帯電話本人認証をもう1回実施してゲーム利用を確認します。保護者同意はゲームインストール後、初回1回のみ実施されます。

保護者同意

保護者同意の動作

年齢確認

PCゲーム初回実行時に、携帯電話本人認証を通じてユーザーの年齢を確認します。認証結果に応じて子ども、青少年、成人に区分し、子どもまたは青少年であれば保護者同意が進行します。年齢に応じて情報収集内容と動作過程に違いがあります。

年齢別の動作

  • 子ども (満14歳未満)
    • 保護者同意有無を確認し、保護者のメールを収集
    • 保護者の携帯電話本人認証を通じて保護者同意を進め、このとき保護者の年齢が満19歳以上か確認
    • 保護者同意完了後、収集した保護者メールにゲーム利用案内メールを送信
  • 青少年 (満14歳以上 ~ 満19歳未満)
    • 保護者同意案内を告知し、保護者のメールを収集
    • 保護者の携帯電話本人認証を通じて保護者同意を進め、このとき保護者の年齢が満19歳以上か確認
    • 保護者同意完了後、収集した保護者メールにゲーム利用案内メールを送信
  • 成人 (満19歳以上)
    • 別途追加手順なしでそのままゲームを利用
区分 年齢基準 保護者同意の実施有無 保護者メール送信
子ども 満14歳未満 実施 ゲーム利用案内メール送信
青少年 満14歳以上 満19歳未満 実施 ゲーム利用案内メール送信
成人 満19歳以上 実施しない 送信しない

保護者同意情報

子どもまたは青少年ユーザーの生年月日、保護者のメール情報は、ゲームでのカスタマーサポート対応、ゲーム利用履歴確認、保護者案内などの用途に活用できます。

保護者同意情報を照会するには、保護者同意完了後にgetParentalConsentInfo()メソッドを呼び出してください。getParentalConsentInfo()メソッドは、保護者同意過程で収集された次の情報を返します。

  • 子どもまたは青少年ユーザーの生年月日
  • 保護者のメールアドレス

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();    

本人認証

本人認証は、ユーザー名義で加入した移動通信キャリア(SKT, KT, LGU+, 格安SIM)を通じて、SMSまたはPASSアプリで送信される6桁の認証番号を入力し、本人かどうかを確認する機能です。

Hive SDKは、ゲームログイン有無に関係なく、ゲームが希望するタイミングで本人認証APIを呼び出せるようサポートします。これにより、ショップ入場、ダンジョン入場など特定サービス利用時点で本人認証を実施するよう構成できます。ゲーム内ショップ入場時に年齢を確認して未成年者の確率型アイテム購入を制限したり、特定年齢以下のユーザーに広告を表示しないなど、ゲーム運営ポリシーに合わせて活用できます。

本人認証

応答情報

Hive SDKで本人認証APIを呼び出すと、認証完了後に携帯電話番号、生年月日、DIハッシュ値を返します。本人認証APIはゲームが希望するタイミングで呼び出せるため、ログイン時点で取得したPlayerIDとマッピングしにくいです。したがって、本人認証のDIハッシュ値はユーザー識別用途に活用できません。

  • 携帯電話番号
  • 生年月日
  • DIハッシュ値 (Hashed DI)

API呼び出し後に結果値を正常に受信できなかった場合は、本人認証APIを再度呼び出して再試行してください。

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はセットアップ前に呼び出されました
        // CANCELED 認証結果を受け取る前にウィンドウを閉じる
        // RESPONSE_FAIL 正常ではない応答
        // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
    }
});
#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はセットアップ前に呼び出されました
        // CANCELED 認証結果を受け取る前にウィンドウを閉じる
        // RESPONSE_FAIL 正常ではない応答
        // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
    }
}));

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はセットアップ前に呼ばれました
        // CANCELED 認証結果を受け取る前にウィンドウを閉じる
        // RESPONSE_FAIL 正常ではない応答
        // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
    }   
});

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はセットアップ前に呼び出されました
            // CANCELED 認証結果を受け取る前にウィンドウを閉じる
            // RESPONSE_FAIL 正常ではない応答
            // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
        } 
    }    
})

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はセットアップ前に呼び出されました
        // CANCELED 認証結果を受け取る前にウィンドウを閉じる
        // RESPONSE_FAIL 正常ではない応答
        // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
    }
});

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はセットアップ前に呼び出されました
        // CANCELED 認証結果を受け取る前にウィンドウを閉じる
        // RESPONSE_FAIL 正常ではない応答
        // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
    }
}

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はセットアップ前に呼び出されました
        // CANCELED 認証結果を受け取る前にウィンドウを閉じる
        // RESPONSE_FAIL 正常ではない応答
        // DEVELOPER_ERROR, CommonLibraryMissing 本人認証ライブラリ参照失敗
    }
}];

成人認証と本人認証のDIハッシュ値整理

区分 成人認証 本人認証
DIハッシュ値 ユーザー識別およびPlayerIDマッピング可能 単純本人確認結果値のためマッピング不可
特徴 ログインセッションと連携され識別子として使用可能 ログイン有無と無関係に呼び出し可能なため識別子としての活用禁止 (1回限りの確認用途)

本人認証と成人認証、または本人認証とデバイス管理を同時に使用する場合

アプリで本人認証と成人認証、または本人認証とデバイス管理を組み合わせて使用する場合、ユーザー利便性のためPASSアプリによる本人確認手順を1回のみ実施します。 ただし、この機能を活用する場合は必ず本人認証をログイン前に先に呼び出す必要があります。成人認証とデバイス管理はログイン過程で進行するため、同一ユーザーと判断して認証過程を省略します。ログイン後に本人認証APIを呼び出すと、成人認証、デバイス管理、本人認証を行おうとするユーザーが同一であると判断しにくいため、PASSアプリ認証をそれぞれ要求することになります。

同時に使用する場合は、次の順序で活用できます。

  • 本人認証API呼び出し -> PASSアプリ実行 -> 本人確認 -> 成人可否確認 -> ログイン完了
  • 本人認証API呼び出し -> PASSアプリ実行 -> 本人確認 -> デバイス管理加入 -> ログイン完了
  • 本人認証API呼び出し -> PASSアプリ実行 -> 本人確認 -> 成人可否確認 -> デバイス管理加入 -> ログイン完了

本人認証 + 成人認証を設定する場合

本人認証過程でPASS認証がすでに実施されるため、成人認証段階では年齢判定のみ進行します。

  • 19歳以上の成人: 正常にログイン完了
  • 19歳未満の子どもおよび青少年: ログインエラーを返す、または『サービス利用不可』ポップアップメッセージを表示

本人認証 + 成人認証

本人認証 + デバイス管理を設定する場合

本人認証過程でPASSアプリ認証がすでに実施されるため、デバイス管理加入時に必要なワンタイムパスワード(OTP)認証手順を省略し、より迅速に進行できます。

本人認証 + デバイス管理

本人認証 + 成人認証 + デバイス管理を設定した場合

本人認証過程でPASSアプリ認証がすでに実施されるため、成人認証とデバイス管理手順が簡素化されます。

  • 成人認証: 年齢判定のみ実施
    • 19歳以上の成人: ログイン完了
    • 19歳未満の子どもおよび青少年: ログインエラーを返す、または『サービス利用不可』ポップアップメッセージを表示
  • デバイス管理: 加入時に必要なOTP認証手順を省略して迅速に進行

本人認証 + 成人認証 + デバイス管理