跳转至

身份验证服务

Hive平台提供身份验证服务,以符合韩国合规要求。身份验证服务包括身份认证、成人验证和父母同意功能,并在Hive SDK(以下简称SDK)的Android、iOS和Windows目标上支持,以便在移动和PC游戏中使用。在移动游戏环境中,即使游戏画面以横屏显示,身份验证服务的用户界面也以竖屏方向提供。

身份认证

身份验证是一项允许使用用户手机号码进行身份验证的功能,以限制游戏内的滥用或限制特定年龄组的用户。由于SDK可以在任何游戏登录时调用身份验证API,因此可以在开始进入商店或进入地下城等服务之前进行身份验证。因此,它可以用于仅允许已完成身份验证的用户继续后续的游戏过程。


当SDK调用身份认证API并完成身份认证时,将获得手机号码、出生日期和DI(重复加入验证信息)哈希值作为结果。此时,DI哈希值与当前登录无关,也与PlayerID无关。
如果在调用API后未能获得结果值,可以通过再次调用身份认证API进行重试。

调用身份验证 API 的示例代码如下:

API 参考: hive.AuthV4.showIdentityVerification

using hive;

AuthV4.showIdentityVerification((ResultAPI result, Identity identity) => {    
    if (result.isSuccess()) {    
        // API 调用成功
        // 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 调用成功
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // CANCELED 窗口在接收认证结果之前关闭
        // RESPONSE_FAIL 异常响应
        // DEVELOPER_ERROR, CommonLibraryMissing 无法引用身份认证库
    }
}));

API 参考: 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 调用成功
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // CANCELED 窗口在接收认证结果之前关闭
        // RESPONSE_FAIL 异常响应
        // DEVELOPER_ERROR, CommonLibraryMissing 无法引用身份认证库
    }   
});

API 参考: 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 调用成功
            // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
        } else {
            // NEED_INITIALIZE 在设置之前被调用
            // CANCELED 窗口在接收认证结果之前关闭
            // RESPONSE_FAIL 异常响应
            // DEVELOPER_ERROR, CommonLibraryMissing 无法引用身份验证库
        } 
    }    
})

API 参考: AuthV4.showIdentityVerification

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

AuthV4.showIdentityVerification(result, identity -> {    
    if (result.isSuccess()) {    
        // API 调用成功
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // CANCELED 窗口在接收身份验证结果之前关闭
        // RESPONSE_FAIL 异常响应
        // DEVELOPER_ERROR, CommonLibraryMissing 未能引用身份验证库
    }
});

API 参考: AuthV4Interface.showIdentityVerification

import HIVEService

AuthV4Interface.showIdentityVerification() { result, identity in    
    if result.isSuccess() {    
        // API 调用成功
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // CANCELED 窗口在接收身份验证结果之前关闭
        // RESPONSE_FAIL 异常响应
        // DEVELOPER_ERROR, CommonLibraryMissing 无法引用身份验证库
    }
}

API 参考: HIVEAuthV4:showIdentityVerification

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 showIdentityVerification: ^(HIVEResultAPI *result, HIVEIdentity *> *identity) {    
    if ([result isSuccess]) {    
        // API 调用成功
        // identity.phoneCode, phoneNumber, dateOfBirth, hashedDi
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // CANCELED 窗口在接收认证结果之前关闭
        // RESPONSE_FAIL 异常响应
        // DEVELOPER_ERROR, CommonLibraryMissing 未能引用身份认证库
    }
}];

成人验证

被归类为“未成年人禁止使用”的游戏必须限制19岁以下未成年人的访问。Hive平台提供了一项成人验证功能,只有在通过手机身份验证确认成人身份后才能访问游戏。成人验证的有效期为1年,之后将自动进行重新认证过程。

如果在控制台 [身份验证 > 成人身份验证 > 启用设置] 中启用了成人验证功能,则可以在游戏登录期间执行成人验证,而无需在 SDK 中实现单独的代码。

Warning

身份认证和成人验证仅可由在韩国拥有居民注册号码或外国注册号码并持有自己名下手机的用户进行。

成人验证失败时的响应

当未成年人尝试进行成人验证并失败时,他们会收到响应 ResultAPI.CANCELED(-6) 和 ResultAPI.Code.AgeLimit(-1200067), "由于年龄限制而失败。". 游戏公司可以利用此响应以他们希望的方式引导游戏中的未成年用户。

获取DI哈希值

完成成人验证后,在SDK中调用AuthV4.getHashedDi方法获取可以识别成人验证用户的DI哈希值。对DI进行哈希的原因是出于安全考虑,游戏公司可以直接使用这个哈希值。由于这个DI哈希值在登录后与PlayerID相关联,因此该哈希值可以作为成人验证用户的标识符。

调用AuthV4.getHashedDi方法以获取与PlayerID关联的DI哈希值的示例代码如下:

API 参考: 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调用成功
    } else {
        // NEED_INITIALIZE在设置之前被调用
        // INVALID_SESSION在登录之前被调用
        // DEVELOPER_ERROR,CommonLibraryMissing未能引用成人验证库
    }
}));

API 参考: 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 参考: 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 调用成功    
        } else {
            // NEED_INITIALIZE 在设置之前被调用
            // INVALID_SESSION 在登录之前被调用
            // DEVELOPER_ERROR, CommonLibraryMissing 无法引用成人验证库
        } 
    }    
})

API 参考: AuthV4.getHashedDi

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

AuthV4.getHashedDi(result, hashedDi -> {    
    if (result.isSuccess()) {    
        // API 调用成功    
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // INVALID_SESSION 在登录之前被调用
        // DEVELOPER_ERROR, CommonLibraryMissing 无法引用成人验证库
    }
});

API 参考: AuthV4Interface.getHashedDi

import HIVEService

AuthV4Interface.getHashedDi() { result, hashedDi in    
    if result.isSuccess() {    
        // API 调用成功    
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // INVALID_SESSION 在登录之前被调用
        // DEVELOPER_ERROR, CommonLibraryMissing 无法引用成人验证库
    }
}

API 参考: HIVEAuthV4:getHashedDi

#import <HIVEService/HIVEService-Swift.h>

[HIVEAuthV4 getHashedDi: ^(HIVEResultAPI *result, NSString *> *hashedDi) {    
    if ([result isSuccess]) {    
        // API 调用成功    
    } else {
        // NEED_INITIALIZE 在设置之前被调用
        // INVALID_SESSION 在登录之前被调用
        // DEVELOPER_ERROR, CommonLibraryMissing 未能引用成人验证库
    }
}];

家长同意

根据《青少年保护法》,19岁以下的青少年只能在获得父母同意的情况下加入和使用游戏。SDK提供了通过手机身份认证获取父母同意的功能,当未成年人加入PC游戏时。此外,在向父母提供游戏使用详情时,未成年人的出生日期和父母的电子邮件地址会传递给游戏应用。

要获取父母同意信息,您必须在完成父母同意后调用getParentalConsentInfo()方法。getParentalConsentInfo方法提供在父母同意期间提供的用户(未成年人)的出生日期和父母的电子邮件地址。

获取父母同意信息的示例代码如下:

API 参考: hive.AuthV4.getParentalConsentInfo

using hive;    

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

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

API 参考: AuthV4::getParentalConsentInfo

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

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