목차 |
---|
...
...
|
...
초기화 및 상태변화 이벤트 처리
...
SDK 초기화
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 로그인 UI를
...
사용하지 않는 로그인하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } |
...
코드 블럭 | ||
---|---|---|
| ||
#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를 사용하지 않는 로그인하기
...
스퀘어 토큰을 사용하여 로그인하기
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h" // 로그인 하고자 하는 idpCode 셋팅 KakaoGame::Data::KGTIdpCode idpCode = KakaoGame::Data::KGTIdpCode::Kakao; 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } }); |
스퀘어 토큰을 사용하여 로그인하기
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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] 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다.
}
} |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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를 사용하는 로그아웃하기
...
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), true, result);
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
} |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), true, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
}
}); |
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
...
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
} |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
}
}); |
탈퇴
계정 연결
...
기본 계정 연결 UI를 사용하는 계정 연결하기
...
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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
{
// 기타 에러 발생
}
} |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#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 { // 기타 에러 발생 } } }); 나머지 에러가 발생한 경우에는 에러 안내 후 로그인 재시도 요청 하여야 합니다. - 에러코드 및 로그 확인 후 원인 파악이 필요합니다. } } }); |
로그아웃
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 로그아웃 UI를 사용하지 않는 로그아웃하기
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h"
KakaoGame::Data::KGTResult result;
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, result);
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
} |
비동기식 예제
코드 블럭 | ||
---|---|---|
| ||
#include "KakaoGameLib.h"
KakaoGame::API::KGTPlayer playerApi;
playerApi.logout(GetSafeHwnd(), false, [this](KakaoGame::Data::KGTResult result) {
if (result.isSuccess())
{
// 로그아웃 성공
// [TODO] 시작 화면으로 돌아가기
}
else
{
// 로그아웃 실패
}
}); |
탈퇴
...
계정 연결
...
발췌문 삽입 | ||||||||
---|---|---|---|---|---|---|---|---|
|
기본 계정 연결 UI를 사용하지 않는 계정 연결하기
...