버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.
목차

...

...

stylenone

...

초기화 및 상태변화 이벤트 처리

...

SDK 초기화

발췌문 삽입
초기화 및 상태변화 이벤트 처리 SDK 예제
초기화 및 상태변화 이벤트 처리 SDK 예제
nameapplication_init_sdk
nopaneltrue

...

발췌문 삽입
로그인 SDK 예제
로그인 SDK 예제
namelogin
nopaneltrue

기본 로그인 UI를

...

사용하지 않는 로그인하기

발췌문 삽입
로그인 SDK 예제
로그인 SDK 예제
namelogin_custom
nopaneltrue

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인 하고자 하는 idpCode 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.login(GetSafeHwnd(), idpCode, result);

if (result.isSuccess())
{
	// IDP 로그인과 플랫폼 로그인 성공
	KakaoGame::Data::KGTPlayer player;
	KakaoGame::API::KGTPlayer playerApi;
	
	playerApi.getCurrentPlayer(player);
	
	std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
	std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
	
	// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
}
else
{
	// IDP 로그인 혹은 플랫폼 로그인 실패
	// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
	if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
		|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
		|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
	{
		// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
	}
	else if (KakaoGame::Data::KGTResultCode::Forbidden== result.code)
	{
		// [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 처리가 필요합니다.
	}
	else if (KakaoGame::Data::KGTResultCode::UserCanceled== result.code)
	{
		// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.
	}
	else
	{
		// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
	}
}

...

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::// 로그인 하고자 하는 idpCode 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;

KakaoGame::API::KGTPlayer playerApi;

playerApi.login(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 로그인과 플랫폼 로그인 성공
		KakaoGame::Data::KGTPlayer player;
		KakaoGame::API::KGTPlayer playerApi;
		
		playerApi.getCurrentPlayer(player);
		
		std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
		std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
		
		// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
	}
	else
	{
		// IDP 로그인 혹은 플랫폼 로그인 실패
		// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
		if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
			|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
			|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
		{
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		}
		else if (KakaoGame::Data::KGTResultCode::Forbidden== result.code)
		{
			// [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 처리가 필요합니다.
		}
		else if (KakaoGame::Data::KGTResultCode::UserCanceled== result.code)
		{
			// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.
		}
		else
		{
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

기본 로그인 UI를 사용하지 않는 로그인하기

...

스퀘어 토큰을 사용하여 로그인하기

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인로그인을 하고자요청하는 하는사용자 idpCode아이디
셋팅
KakaoGamestd::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakaowstring playerId;

// 스퀘어에서 전달받은 토큰
std::wstring squareToken;

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.loginloginIdpWithSquareToken(GetSafeHwnd(), playerId, idpCodesquareToken, result);

if (result.isSuccess())
{
	// IDP 로그인과 플랫폼 로그인 성공
	KakaoGame::Data::KGTPlayer player;
	KakaoGame::API::KGTPlayer playerApi;
	
	playerApi.getCurrentPlayer(player);
	
	std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
	std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
	
	// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
}
else
{
	// IDP 로그인 혹은 플랫폼 로그인 실패
	// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
	if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
		|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
		|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
	{
		// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
	}
	else
if (KakaoGame::Data::KGTResultCode::Forbidden== result.code)
	{
		// [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 처리가 필요합니다.
	}
	else if (KakaoGame::Data::KGTResultCode::UserCanceled== result.code)
	{
		// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.
	}
	else
	{
		// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
	}
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인 하고자 하는 idpCode 셋팅
KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao;

나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
	}
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인을 요청하는 사용자 아이디
std::wstring playerId;

// 스퀘어에서 전달받은 토큰
std::wstring squareToken;

KakaoGame::API::KGTPlayer playerApi;

playerApi.login(GetSafeHwnd(), playerId, squareToken, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 로그인과 플랫폼 로그인 성공
		KakaoGame::Data::KGTPlayer player;
		KakaoGame::API::KGTPlayer playerApi;
		
		playerApi.login(GetSafeHwnd(), idpCode, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 로그인과 플랫폼 로그인 성공
		KakaoGame::Data::KGTPlayer player;
		KakaoGame::API::KGTPlayer playerApi;
		
		playerApi.getCurrentPlayer(playergetCurrentPlayer(player);
		
		std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
		std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
		
		// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
	}
	else
	{
		// IDP 로그인 혹은 플랫폼 로그인 실패
		// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
		if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
			|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
			|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
		{
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		}
		else
if (KakaoGame::Data::KGTResultCode::Forbidden== result.code)
		{
			/		{
			// [TODO] CBT기간동안 허용된 유저외에는 인증이 불가능 할 수 있습니다. 유저에게 안내메시지 처리가 필요합니다.
		}
		else if (KakaoGame::Data::KGTResultCode::UserCanceled== result.code)
		{
			// [TODO] 사용자가 로그인 진행 중 취소한 상황이므로 로그인 화면을 유지 하여야 합니다.
		}
		else
		{
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

스퀘어 토큰을 사용하여 로그인하기

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인을 요청하는 사용자 아이디
std::wstring playerId;

// 스퀘어에서 전달받은 토큰
std::wstring squareToken;

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.loginIdpWithSquareToken(GetSafeHwnd(), playerId, squareToken, result);

if (result.isSuccess())
{
	// IDP 로그인과 플랫폼 로그인 성공
	KakaoGame::Data::KGTPlayer player;
	KakaoGame::API::KGTPlayer playerApi;
	
	playerApi.getCurrentPlayer(player);
	
	std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
	std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
	
	// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
}
else
{
	// IDP 로그인 혹은 플랫폼 로그인 실패
	// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
	if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
		|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
		|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
	{
		// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
	}
	else
	{
		// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
	}
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

// 로그인을 요청하는 사용자 아이디
std::wstring playerId;

// 스퀘어에서 전달받은 토큰
std::wstring squareToken;

KakaoGame::API::KGTPlayer playerApi;

playerApi.login(GetSafeHwnd(), playerId, squareToken, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 로그인과 플랫폼 로그인 성공
		KakaoGame::Data::KGTPlayer player;
		KakaoGame::API::KGTPlayer playerApi;
		
		playerApi.getCurrentPlayer(player);
		
		std::wstring playerId = player.playerId; // 플랫폼에서 발급한 현재 Player의 ID
		std::wstring accessToken = playerApi.getAccessToken(); // 플랫폼 액세스 토큰(AccessToken)
		
		// [TODO] 로그인이 성공하였으므로 게임 화면으로 이동합니다.
	}
	else
	{
		// IDP 로그인 혹은 플랫폼 로그인 실패
		// [TODO] 로그인 실패 시 사용자 안내 후 재 시도 하도록 하여야 합니다.
		if (KakaoGame::Data::KGTResultCode::NetworkFailure == result.code
			|| KakaoGame::Data::KGTResultCode::ServerTimeout == result.code
			|| KakaoGame::Data::KGTResultCode::ConnectionFailed == result.code)
		{
			// [TODO] 네트워크 에러가 발생한 경우에는 유저에게 네트워크 이슈로 스타트에 실패했음을 알리고 재시도
		}
		else
		{
			// [TODO] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그아웃

...

기본 로그아웃 UI를 사용하는 로그아웃하기

...

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), true, result);

if (result.isSuccess())
{
	// 로그아웃 성공
	
	// [TODO] 시작 화면으로 돌아가기
}
else
{
	// 로그아웃 실패
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), true, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 로그아웃 성공
		
		// [TODO] 시작 화면으로 돌아가기
	}
	else
	{
		// 로그아웃 실패
	}
});

기본 로그아웃 UI를 사용하지 않는 로그아웃하기

...

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), false, result);

if (result.isSuccess())
{
	// 로그아웃 성공
	
	// [TODO] 시작 화면으로 돌아가기
}
else
{
	// 로그아웃 실패
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 로그아웃 성공
		
		// [TODO] 시작 화면으로 돌아가기
	}
	else
	{
		// 로그아웃 실패
	}
});

탈퇴

계정 연결

...

기본 계정 연결 UI를 사용하는 계정 연결하기

...

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.connect(GetSafeHwnd(), result);

if (result.isSuccess())
{
	// IDP 연결 성공
	// Player ID 는 변경되지 않습니다.
}
else
{
	// IDP 연결 실패
	if (KakaoGame::Data::KGTResultCode::InvalidParameter== result.code)
	{
		// 잘못된 인자가 전달 된 경우
	}
	else if (KakaoGame::Data::KGTResultCode::NotAuthorized== result.code)
	{
		// 현재 로그인이 안되어 있는 경우
	}
	else if (KakaoGame::Data::KGTResultCode::InvalidState== result.code)
	{
		// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
	}
	else if (KakaoGame::Data::KGTResultCode::AlreadyUsedIDPAccount== result.code)
	{
		// 이미 연결되어 있는 계정이 있는 경우
	}
	else
	{
		// 기타 에러 발생
	}
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTPlayer playerApi;

playerApi.connect(GetSafeHwnd(), [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// IDP 연결 성공
		// Player ID 는 변경되지 않습니다.
	}
	else
	{
		// IDP 연결 실패
		if (KakaoGame::Data::KGTResultCode::InvalidParameter== result.code)
		{
			// 잘못된 인자가 전달 된 경우
		}
		else if (KakaoGame::Data::KGTResultCode::NotAuthorized== result.code)
		{
			// 현재 로그인이 안되어 있는 경우
		}
		else if (KakaoGame::Data::KGTResultCode::InvalidState== result.code)
		{
			// 현재 인증 된 IDP 가 계정 연결 가능한 idp가 아닌 경우
		}
		else if (KakaoGame::Data::KGTResultCode::AlreadyUsedIDPAccount== result.code)
		{
			// 이미 연결되어 있는 계정이 있는 경우
		}
		else
		{
			// 기타 에러 발생
		}
	}
}); 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
		}
	}
});

로그아웃

...

발췌문 삽입
로그아웃 SDK 예제
로그아웃 SDK 예제
namelogout
nopaneltrue

기본 로그아웃 UI를 사용하지 않는 로그아웃하기

발췌문 삽입
로그아웃 SDK 예제
로그아웃 SDK 예제
namelogout_custom
nopaneltrue

동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), false, result);

if (result.isSuccess())
{
	// 로그아웃 성공
	
	// [TODO] 시작 화면으로 돌아가기
}
else
{
	// 로그아웃 실패
}

비동기식 예제

코드 블럭
languagecpp
#include "KakaoGameLib.h"

KakaoGame::API::KGTPlayer playerApi;

playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
	if (result.isSuccess())
	{
		// 로그아웃 성공
		
		// [TODO] 시작 화면으로 돌아가기
	}
	else
	{
		// 로그아웃 실패
	}
});

탈퇴

...

계정 연결

...

발췌문 삽입
계정 연결 SDK 예제
계정 연결 SDK 예제
nameconnect
nopaneltrue

기본 계정 연결 UI를 사용하지 않는 계정 연결하기

...