로그인이 완료되었다면 로그인된 유저의 프로필 정보 및 이용 정지 정보를 확인할 수 있습니다.
유저 프로필 확인
Hive 로그인을 완료하였다면 AuthV4 클래스의 getProfile()
메서드를 이용하여 유저의 프로필 정보를 가져올 수 있습니다. 프로필 정보에는 playerId
, 외부에 보여질 유저의 닉네임인 playerName
, 유저의 섬네일 이미지인 playerImageUrl
을 포함하고 있습니다.
다음은 유저의 프로필 정보를 획득하는 예제 코드입니다.
API Reference: hive.AuthV4.getProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using hive; List<Int64> playerIdList = new List(); playerIdList.Add(0123); playerIdList.Add(4567); AuthV4.getProfile(playerIdList, (ResultAPI result, List profileInfoList) => { if (!result.isSuccess()) { return; } if (profileInfoList != null) { foreach (ProfileInfo profileInfo in profileInfoList) { // PlayerName: profileInfo.playerName // PlayerId: profileInfo.playerId } } }); |
API Reference: AuthV4::getProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <HIVE_SDK_Plugin/HIVE_CPP.h> using namespace std; using namespace hive; vector<PlayerID> playerIdList; playerIdList.push_back(0123); playerIdList.push_back(4567); AuthV4::getProfile(playerIdList, [=](ResultAPI const & result, vector<ProfileInfo> const & profileInfoList) { if (!result.isSuccess()) { return; } if (profileInfoList != null) { for (auto profileInfo : profileInfoList) { // PlayerName: profileInfo.playerName // PlayerId: profileInfo.playerId } } }); |
API Reference: AuthV4.getProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import com.hive.AuthV4 import com.hive.ResultAPI val playerIdList = arrayListOf<Long>( 1234, 4567 ) AuthV4.getProfile(playerIdList, object : AuthV4.AuthV4GetProfileListener { override fun onAuthV4GetProfile(result: ResultAPI, profileInfoList: ArrayList<AuthV4.ProfileInfo>?) { if (!result.isSuccess) { return } if (profileInfoList != null) { for (i in 0 until profileInfoList.size) { // PlayerName: profileInfoList[i].playerName // PlayerId: profileInfoList[i].playerId } } } }) |
API Reference: com.hive.AuthV4.getProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import com.hive.AuthV4; import com.hive.ResultAPI; ArrayList<Long> playerIdList = new ArrayList<>(Arrays.asList( 1234L, 5678L )); AuthV4.INSTANCE.getProfile(playerIdList, (result, profileInfoList) -> { if (!result.isSuccess()) { return; } if (profileInfoList != null) { for (AuthV4.ProfileInfo profileInfo : profileInfoList) { // PlayerName: profileInfo.getPlayerName(); // PlayerId: profileInfo.getPlayerId(); } } }); |
API Reference: AuthV4Interface.getProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import HIVEService var playerIdList = [Int64]() playerIdList.append(0123) playerIdList.append(4567) AuthV4Interface.getProfile(playerIdList) { result, profileInfoList in if !result.isSuccess() { return } if let profileInfoList = profileInfoList { for (profileInfo in profileInfoList) { // PlayerName: profileInfo.playerName // PlayerId: profileInfo.playerId } } } |
API Reference: HIVEAuthV4:getProfile
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
#import <HIVEService/HIVEService-Swift.h> NSMutableArray<NSNumber *> *playerIdList = [[[NSMutableArray] alloc] init]; [playerIdList addObject: [NSNumber numberWithLongLong:0123]]; [playerIdList addObject: [NSNUmber numberWithLongLong:4567]]; [HIVEAuthV4 getProfile: playerIdList handler: ^(HIVEResultAPI *result, NSArray<HIVEProfileInfo *> *profileInfoList) { if (![result isSuccess]) { return; } if (profileInfoList != nil) { for (HIVEProfileInfo *profileInfo in profileInfoList) { // PlayerName: profileInfo.playerName // PlayerId: profileInfo.playerId } } }]; |
이용 정지 상태 확인
로그인 및 IdP 연동 시에는 Hive에서 유저 이용 정지 여부를 자동으로 확인하고 게임을 진행하지 못하도록 처리합니다. 그 외 게임 진행 중 이용 정지 상태를 확인해야 하는 경우에는 checkBlacklist()
메서드를 이용, 게임에서 유저의 이용 정지 상태를 실시간으로 확인하고 게임을 진행하지 못하도록 처리해야 합니다. checkBlacklist()
호출 시 isShow
파라미터 값에 따라 Hive는 이용 정지 팝업을 직접 띄우기도 하고, 혹은 여러분이 이용 정지 팝업을 구성하여 띄울 수 있도록 팝업에 채울 내용을 반환하기도 합니다.
-
- Hive가 제공하는 이용 정지 팝업 이용하기:
isShow
파라미터를true
로 설정하세요. - 이용 정지 팝업 커스터마이징 하기:
isShow
파라미터를false
로 설정하세요. 이용 정지 팝업 정보에 대한 자세한 내용은 하단의 Hive가 반환하는 이용 정지 팝업 정보를 참고하세요.
- Hive가 제공하는 이용 정지 팝업 이용하기:
Hive가 반환하는 이용 정지 팝업 정보
checkBlacklist()
의 결과가 성공 시 다음의 표에 정리된 값들을 AuthV4MaintenanceInfo
오브젝트에 담아 반환합니다.
필드명 | 설명 | 타입 |
title | 팝업 제목 | String |
message | 팝업 내용 | String |
button | 팝업 버튼의 라벨 문구 | String |
action | 팝업 버튼을 눌렀을 때 어떤 동작을 할 것인지 의미
|
AuthV4MaintenanceActionType 열거형 |
url | 외부 브라우저로 띄울 URL. action 필드 값이 OPEN_URL일 때 유효함 |
String |
remainingTime | 이용 정지까지 남은 초단위 시간. 시간은 실시간 갱신되며 0초가 되면 앱이 종료됨 | Integer |
다음은 이용 정지 유저를 확인하는 예제 코드입니다.
- Hive UI를 사용하지 않을 경우 (isShow = false)
Unity®
API Reference: hive.AuthV4.checkBlacklist
12345678910111213141516using hive;Boolean isShow = false;AuthV4.checkBlacklist(isShow, (ResultAPI result, List<AuthV4.MaintenanceInfo> maintenanceInfo) => {if (!result.isSuccess()) {// 이용 정지 여부 확인 실패return;}if(maintenanceInfo != null){// 이용 정지 유저인 경우} else{// 일반 유저인 경우}});C++API Reference: AuthV4::checkBlacklist
123456789101112131415161718#include <HIVE_SDK_Plugin/HIVE_CPP.h>using namespace std;using namespace hive;bool isShow = false;AuthV4::checkBlacklist(isShow, [=](ResultAPI const & result, vector<AuthV4MaintenanceInfo> const & maintenanceInfo) {if(!result.isSuccess) {// 이용 정지 여부 확인 실패return;}if (maintenanceInfo != null){// 이용 정지 유저인 경우} else {// 일반 유저인 경우}});KotlinAPI Reference: AuthV4.checkBlacklist
12345678910111213141516171819import com.hive.AuthV4import com.hive.ResultAPIval isShow = falseAuthV4.checkBlacklist(isShow, object : AuthV4.AuthV4MaintenanceListener {override fun onAuthV4Maintenance(result: ResultAPI, maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {if (!result.isSuccess) {// 이용 정지 여부 확인 실패return}if (maintenanceInfo != null) {// 이용 정지 유저인 경우} else {// 일반 유저인 경우}}})JavaAPI Reference: com.hive.AuthV4.checkBlacklist
1234567891011121314151617import com.hive.AuthV4;import com.hive.ResultAPI;boolean isShow = false;AuthV4.INSTANCE.checkBlacklist(isShow, (result, maintenanceInfo) -> {if (!result.isSuccess()) {// 이용 정지 여부 확인 실패return;}if (maintenanceInfo != null) {// 이용 정지 유저인 경우} else {// 일반 유저인 경우}});SwiftAPI Reference: AuthV4Interface.checkBlacklist
12345678910111213141516import HIVEServicelet isShow = falseAuthV4Interface.checkBlacklist(isShow) { result, maintenanceInfo inif !result.isSuccess() {// 이용 정지 여부 확인 실패return}if let maintenanceInfo = maintenanceInfo {// 이용 정지 유저인 경우} else {// 일반 유저인 경우}}Objective-CAPI Reference: HIVEAuthV4:checkBlacklist
12345678910111213141516#import <HIVEService/HIVEService-Swift.h>BOOL isShow = NO;[HIVEAuthV4 checkBlackList: isShow handler: ^(HIVEResultAPI *result, HIVEAuthV4MaintenanceInfo *maintenanceInfo) {if (![result isSuccess]) {// 이용 정지 여부 확인 실패return;}if (maintenanceInfo != nil) {// 이용 정지 유저인 경우} else {// 일반 유저인 경우}}]; -
Hive UI를 사용할 경우 (isShow = true)
Unity®API Reference: hive.AuthV4.checkBlacklist
12345678910111213// isShow 값이 true 이면 Hive SDK 내부에서 이용 정지 팝업을 띄운다.Boolean isShow = true;// Hive SDK AuthV4 이용 정지 유저 확인 요청AuthV4.checkBlacklist(isShow, (ResultAPI result, List<AuthV4.MaintenanceInfo> maintenanceInfo)=>{if (result.isSuccess()) {// 일반 유저인경우}else if (result.needExit()) {// TODO: 앱 종료 기능을 구현하세요.// 예) Application.Quit();}});C++API Reference: AuthV4::checkBlacklist
12345678910111213141516// isShow 값이 true 이면 Hive SDK 내부에서 이용 정지 유저 팝업을 띄운다.bool isShow = true;// Hive SDK AuthV4 이용 정지 유저 확인 요청AuthV4::checkBlacklist(isShow, [=](ResultAPI const & result,std::vector<AuthV4MaintenanceInfo> const & maintenanceInfolist){if (result.isSuccess()) {// 일반 유저인경우}else if (result.needExit()) {// TODO: 앱 종료 기능을 구현하세요.// Cocos2d-x 엔진 사용자// 예) exit(0);// Unreal 엔진 사용자// 예) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false);}});KotlinAPI Reference: com.hive.AuthV4.checkBlacklist
1234567891011121314151617// isShow 값이 true 이면 Hive SDK 내부에서 이용 정지 유저 팝업을 띄운다.val isShow = true// Hive SDK AuthV4 이용 정지 유저 확인 요청AuthV4.checkBlacklist(isShow, object : AuthV4.AuthV4MaintenanceListener {override fun onAuthV4Maintenance(result: ResultAPI,maintenanceInfo: ArrayList<AuthV4.AuthV4MaintenanceInfo>?) {if (result.isSuccess) {// 일반 유저인경우} else if (result.needExit()) {// TODO: 앱 종료 기능을 구현하세요.// 예) exitProcess(0)}}})JavaAPI Reference: com.hive.AuthV4.checkBlacklist
12345678910111213141516// isShow 값이 true 이면 Hive SDK 내부에서 이용 정지 유저 팝업을 띄운다.boolean isShow = true;// Hive SDK AuthV4 이용 정지 유저 확인 요청AuthV4.checkBlacklist(isShow, new AuthV4.AuthV4MaintenanceListener() {@Overridepublic void onAuthV4Maintenance(ResultAPI result, ArrayList<AuthV4.AuthV4MaintenanceInfo> maintenanceInfo) {if (result.isSuccess()) {// 일반 유저인경우}else if (result.needExit()) {// TODO: 앱 종료 기능을 구현하세요.// 예) System.exit(0);}}});SwiftAPI Reference: HIVEAuthV4:checkBlacklist
12345678910111213// isShow 값이 true 이면 Hive SDK 내부에서 이용 정지 유저 팝업을 띄운다.let isShow = true// Hive SDK AuthV4 이용 정지 유저 확인 요청AuthV4Interface.checkBlacklist(isShow) { (result, maintenanceInfolist) inif result.isSuccess() {// 일반 유저인경우}else if result.needExit() {// TODO: 앱 종료 기능을 구현하세요.// 예) exit(0)}}Obj-CAPI Reference: HIVEAuthV4:checkBlacklist
12345678910111213// isShow 값이 YES 이면 Hive SDK 내부에서 이용 정지 유저 팝업을 띄운다.BOOL isShow = YES;// Hive SDK AuthV4 이용 정지 유저 확인 요청[HIVEAuthV4 checkBlacklist:isShow handler:^(HIVEResultAPI *result, NSArray<HIVEAuthV4MaintenanceInfo *> *maintenanceInfolist) {if (result.isSuccess) {// 일반 유저인경우}else if (result.needExit) {// TODO: 앱 종료 기능을 구현하세요.// 예) exit(0);}}];
유저 이메일 정보 활용
게임사가 로그인한 사용자 프로필 정보에 있는 이메일 정보를 수집하는 기능을 제공합니다. 이메일 정보를 수집하려면, Hive 콘솔에서 해당 기능을 활성화해야 합니다.
먼저, 아래의 Idp 리스트 중 ‘이메일 수집 가능 Idp’에서 이메일 수집 권한 승인을 받아야 합니다.
- 이메일 수집 가능 IdP: Google, Facebook, Huawei (Android), Hive 멤버십, Apple (iOS)
- 이메일 수집 불가 IdP: Google Play Games, Apple Game Center, QQ, VK, WeChat, Line, Weverse
명시적 로그인 API 호출 후 콜백으로 전달받는 PlayerInfo
클래스 인스턴스에서 providerInfoData
에 접근하면 로그인한 유저 이메일 주소를 확인할 수 있습니다.
ProviderType
을 providerInfoData
의 키 값으로 사용해 조회하면 ProviderInfo 정보를 확인할 수 있습니다. 자세한 내용은 아래 예제 코드를 참고하세요.
API Reference: hive.AuthV4.showSignIn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Hive SDK AuthV4 인증 UI 요청 AuthV4.showSignIn((ResultAPI result, AuthV4.PlayerInfo playerInfo)=>{ if (result.isSuccess()) { // 인증 성공 // playerInfo : 인증된 사용자 정보 // 이메일 정보 조회 예시 foreach (KeyValuePair<AuthV4.ProviderType, AuthV4.ProviderInfo> entry in playerInfo.providerInfoData) { AuthV4.ProviderInfo providerInfo = entry.Value; if(providerInfo.providerEmail != null && providerInfo.providerEmail != "") { string email = providerInfo.providerEmail; break; } } } else if (result.needExit()) { // TODO: 앱 종료 기능을 구현하세요 // 예) Application.Quit(); } }); |
API Reference: AuthV4::showSignIn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// Hive SDK AuthV4 인증 UI 요청 AuthV4::showSignIn([=](ResultAPI const & result, PlayerInfo const & playerInfo) { if (result.isSuccess()) { // 인증 성공 // playerInfo: 인증된 사용자 정보 // 이메일 정보 조회 예시 for(auto it = playerInfo.providerInfoData.begin(); it != playerInfo.providerInfoData.end(); ++it) { hive::ProviderInfo providerInfo = it->second; if(!providerInfo.providerEmail.empty()) { std::string email = providerInfo.providerEmail; break; } } } else if (result.needExit()) { // TODO: 앱 종료 기능을 구현하세요 // Cocos2d-x 엔진 사용자 // 예) exit(0); // Unreal 엔진 사용자 // 예) UKismetSystemLibrary::QuitGame(GetWorld(), nullptr, EQuitPreference::Quit, false); } }); |
API Reference: com.hive.AuthV4.showSignIn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
// Hive SDK AuthV4 인증 UI 요청 AuthV4.showSignIn(object : AuthV4.AuthV4SignInListener { override fun onAuthV4SignIn(result: ResultAPI, playerInfo: AuthV4.PlayerInfo?) { if (result.isSuccess) { // 인증 성공 // playerInfo: 인증된 사용자 정보 // 이메일 정보 조회 예시 playerInfo?.let { for ((key, value) in it.providerInfoData) { var providerInfo: AuthV4.ProviderInfo = value if(providerInfo.providerEmail.isNotEmpty()) { val email = providerInfo.providerEmail break } } } } else if (result.needExit()) { // TODO: 앱 종료 기능을 구현하세요 // 예) exitProcess(0) } } }) |
API Reference: com.hive.AuthV4.showSignIn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
// Hive SDK AuthV4 인증 UI 요청 AuthV4.showSignIn(new AuthV4.AuthV4SignInListener() { @Override public void onAuthV4SignIn(ResultAPI result, AuthV4.PlayerInfo playerInfo) { if (result.isSuccess()) { // 인증 성공 // playerInfo: 인증된 사용자 정보 // 이메일 정보 조회 예시 if(playerInfo != null) { for (Map.Entry<AuthV4.ProviderType, AuthV4.ProviderInfo> entry : playerInfo.getProviderInfoData().entrySet()) { AuthV4.ProviderInfo providerInfo = entry.getValue(); if (providerInfo.getProviderEmail() != "") { String email = providerInfo.getProviderEmail(); break; } } } } else if (result.needExit()) { // TODO: 앱 종료 기능을 구현하세요 // 예) System.exit(0); } } }); |
API Reference: HIVEAuthV4:showSignIn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
var email = String() // Hive SDK AuthV4 인증 UI 요청 AuthV4Interface.showSignIn { (result, playerInfo) in if result.isSuccess() { // 인증 성공 // playerInfo: 인증된 사용자 정보 // 이메일 정보 조회 예시 if let playerInfo = playerInfo { // providerEmail이 존재하는 providerInfo 탐색 (현재 로그인 진행된 provider) for key in playerInfo.providerInfoData.keys { if let providerInfo = playerInfo.providerInfoData[key], providerInfo.providerEmail.count > 0 { // providerEmail != "" email = providerInfo.providerEmail break } } } } else if result.needExit() { // TODO: 앱 종료 기능을 구현하세요 // 예) exit(0) } } |
API Reference: HIVEAuthV4:showSignIn
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
__block NSString* email = @""; // Hive SDK AuthV4 인증 UI 요청 [HIVEAuthV4 showSignIn:^(HIVEResultAPI *result, HIVEPlayerInfo *playerInfo) { if([result isSuccess]){ // 인증 성공 // playerInfo: 인증된 사용자 정보 // 이메일 정보 조회 예시 if(playerInfo != nil) { // providerEmail이 존재하는 providerInfo 탐색 (현재 로그인 진행된 provider) for (NSString* key in playerInfo.providerInfoData.allKeys) { HIVEProviderInfo* providerInfo = playerInfo.providerInfoData[key]; if (providerInfo != nil && providerInfo.providerEmail.length > 0) { // providerEmail != "" email = providerInfo.providerEmail; break; } } } } else if ([result needExit]) { // TODO: 앱 종료 기능을 구현하세요 // 예) exit(0); } }]; |