身分驗證服務¶
為遵守大韓民國相關法令與法規遵循,Hive 平台提供如成人驗證、監護人同意、身分驗證等「身分驗證服務」。「身分驗證服務」僅可由在大韓民國持有居民登錄號或外國人登錄號,且持有本人名義手機的使用者執行。
成人驗證¶
青少年不得使用等級的遊戲,依據《青少年保護法》等相關法令,必須限制未滿 19 歲的未成年人無法使用。Hive 平台的成人驗證功能會透過手機身分驗證確認使用者是否為成人,並僅在確認為成人時提供可登入遊戲。
成人驗證自首次驗證時起 1 年內有效,若在啟動 App 時判定有效期間已到期,將自動進行重新驗證流程。
若在 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
#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 在設定前呼叫
// 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
API Reference: AuthV4Interface.getHashedDi
API Reference: HIVEAuthV4:getHashedDi
在帳號建立限制政策中運用 DI 雜湊值¶
成人驗證允許持有多個 PlayerID 的使用者以同一手機號碼完成驗證。若依遊戲營運政策要限制同一手機號碼的多次驗證,可透過限制每個電話號碼可進行成人驗證的帳號數來阻擋。遊戲公司需將成人驗證結果取得的 DI 雜湊值與 PlayerID 進行映射後儲存。可依 DI 雜湊值確認已建立的 PlayerID 數量,並依帳號建立限制政策控制遊戲使用者的進入。
監護人同意¶
兒童或青少年使用 PC 遊戲時,依據《青少年保護法》,未滿 19 歲使用者需要取得監護人同意。Hive 平台會透過手機身分驗證確認使用者年齡;若使用者為兒童或青少年,會再進行一次父母或法定代理人等監護人的手機身分驗證,以確認可使用遊戲。監護人同意在安裝遊戲後僅首次進行 1 次。
監護人同意運作¶
年齡確認¶
首次執行 PC 遊戲時,會透過手機身分驗證確認使用者年齡。依驗證結果區分為兒童、青少年、成人;若為兒童或青少年,則會進行監護人同意。依年齡不同,資訊蒐集內容與流程也有所差異。
依年齡的運作¶
- 兒童(未滿 14 歲)
- 確認是否已取得監護人同意,並蒐集監護人的電子郵件
- 透過監護人的手機身分驗證進行監護人同意,並在此確認監護人是否滿 19 歲
- 監護人同意完成後,會將遊戲使用說明郵件寄送至所蒐集的監護人電子郵件
- 青少年(滿 14 歲以上 ~ 未滿 19 歲)
- 提示監護人同意通知並蒐集監護人的電子郵件
- 透過監護人的手機身分驗證進行監護人同意,並在此確認監護人是否滿 19 歲
- 監護人同意完成後,會將遊戲使用說明郵件寄送至所蒐集的監護人電子郵件
- 成人(滿 19 歲以上)
- 無需額外程序即可立即使用遊戲
| 分類 | 年齡基準 | 是否進行監護人同意 | 發送監護人電子郵件 |
|---|---|---|---|
| 兒童 | 未滿 14 歲 | 進行 | 發送遊戲使用說明郵件 |
| 青少年 | 滿 14 歲以上未滿 19 歲 | 進行 | 發送遊戲使用說明郵件 |
| 成人 | 滿 19 歲以上 | 不進行 | 不發送 |
監護人同意資訊¶
兒童或青少年使用者的出生日期、監護人的電子郵件資訊,可在遊戲中用於客戶支援處理、確認遊戲使用紀錄、監護人通知等用途。
若要查詢監護人同意資訊,請在監護人同意完成後呼叫 getParentalConsentInfo() 方法。getParentalConsentInfo() 方法會回傳在監護人同意過程中蒐集的以下資訊。
- 兒童或青少年使用者的出生日期
- 監護人的電子郵件地址
身分驗證¶
身分驗證是透過以使用者名義申辦的行動通訊商(SKT、KT、LGU+、MVNO),輸入以簡訊(SMS)或 PASS App 發送的 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 映射 | 僅為單純身分驗證結果值,無法映射 |
| 特性 | 與登入工作階段連動,可作為識別值使用 | 可在是否登入無關下呼叫,因此禁止作為識別值使用(僅一次性確認用途) |
同時使用身分驗證與成人驗證,或身分驗證與裝置管理的情況¶
在 App 中若將身分驗證與成人驗證,或身分驗證與裝置管理結合使用,為了使用者便利,僅會透過 PASS App 執行 1 次身分確認流程。 但若要使用此功能,務必先在登入前呼叫身分驗證。由於成人驗證與裝置管理會在登入流程中進行,因此會判定為同一使用者並省略驗證流程。若在登入後呼叫身分驗證 API,因難以判斷要進行成人驗證、裝置管理、身分驗證的是否為同一使用者,因此會分別要求 PASS App 驗證。
同時使用時可依下列順序運用。
- 呼叫身分驗證 API -> 執行 PASS App -> 身分確認 -> 確認是否為成人 -> 完成登入
- 呼叫身分驗證 API -> 執行 PASS App -> 身分確認 -> 加入裝置管理 -> 完成登入
- 呼叫身分驗證 API -> 執行 PASS App -> 身分確認 -> 確認是否為成人 -> 加入裝置管理 -> 完成登入
設定身分驗證 + 成人驗證時¶
由於在身分驗證過程中已完成 PASS 驗證,成人驗證階段僅進行年齡判斷。
- 19 歲以上成人: 正常完成登入
- 19 歲以下兒童與青少年: 傳遞登入錯誤或顯示 '無法使用服務' 彈窗訊息
設定身分驗證 + 裝置管理時¶
由於在身分驗證過程中已完成 PASS App 驗證,因此可略過加入裝置管理所需的一次性密碼(OTP)驗證流程,更快速地進行。
設定身分驗證 + 成人驗證 + 裝置管理時¶
由於在身分驗證過程中已完成 PASS App 驗證,因此成人驗證與裝置管理流程會被簡化。
- 成人驗證: 僅進行年齡判斷
- 19 歲以上成人: 完成登入
- 19 歲以下兒童與青少年: 傳遞登入錯誤或顯示 '無法使用服務' 彈窗訊息
- 裝置管理: 略過加入時所需的 OTP 驗證流程,以快速進行





