로그인
Unity3D
개요
액세스 내비게이션
승인된 로그인
게스트 로그인
위챗 QR코드 스캔 로그인
다른 계정 처리
토큰 획득
실명제
제 3자 플랫폼 로그인
로그아웃
자주 묻는 질문
Android
개요
액세스 내비게이션
승인된 로그인
위챗 QR코드 스캔 로그인
다른 계정 처리
토큰 획득
실명제
제 3자 플랫폼 로그인
로그아웃
자주 묻는 질문
IOS
개요
액세스 내비게이션
승인된 로그인
게스트 로그인
위챗 QR코드 스캔 로그인
다른 계정 처리
토큰 획득
실명제
제 3자 플랫폼 로그인
로그아웃
자주 묻는 질문
기타
데이터 구조
시스템 도구
로그인 / IOS / 개요

개요

MSDK 로그인 기능은 게임 플레이어가 게임에 가장 빨리 로그인할 수 있는 방식입니다. 플레이어는 QQ 계정, 위챗 계정, 게스트 계정을 사용해 게임에 로그인할 수 있으며, iOS, Android 휴대전화기 및 태블릿 기기에서 사용할 수 있습니다.

아래 그림을 참조해 게임 로그인 페이지에 로그인 버튼을 위치시킬 수 있으며, Appstore의 요구 사항에 따라 게스트 로그인 버튼은 첫 번째 위치에 있어야 합니다.

(./res/login_screen_c.png)

MSDK 로그인은 다음과 같은 체험을 구현할 수 있습니다.

1) 빠른 게임 로그인 계정 생성: MSDK 로그인은 사용자가 게임 내에서 훨씬 빠르고 편리하게 게임 로그인 계정을 생성할 수 있게 해 주며, 비밀번호(이후에 분실 가능)를 설정할 필요가 없습니다. 이 간단하고 편리한 체험이 보다 높은 구매 전환률을 가져올 수 있습니다.

2 맞춤형 게임 운영: MSDK 로그인 후 플레이어 프로필 사진, 기본 데이터 정보 획득을 승인하여 편리하게 게임을 운영하면서 보다 높은 유지율을 확보할 수 있습니다.

3) 소셜 기능: MSDK 로그인 후 게임 플레이어는 친구 간에 교류하면서 게임 길드 그룹 등을 만들 수 있으므로 게임 내 체험 공유를 촉진할 수 있습니다.

기능1 QQ 로그인

MSDK 인터페이스를 호출해 모바일QQ 클라이언트를 풀업해 플레이어에게 게임을 승인하도록 안내할 수 있습니다. 일반 로그인 절차는 다음과 같습니다.

1) 게임 로그인 페이지에서 “QQ 친구와 플레이하기”를 클릭

(./res/login_qq1_c.png)

2) 모바일QQ 로그인 페이지에서 승인 완료

(./res/login_qq2_c.png)

그중 각 영역에 대한 설명은 다음과 같습니다.

기능 1.1: 승인된 로그인 버튼을 클릭하면 게임에 대한 로그인 승인이 완료됩니다.


기능 1.2: 사용자가 게임에 승인한 권한 목록에 대해서는, “앱 내 귀하의 QQ 친구 정보 방문” 항목이 있는지 특별히 주의를 기울여 주십시오. 해당 항목이 없을 경우, 사용자 관계 사슬 획득 시에 에러 메시지 “100030”이 표시됩니다. QQ 로그인 전에 호출을 확인해야 함WGPlatform::GetInstance()->WGSetPermission(eOPEN_ALL);


기능 1.3: "돌아가기” 버튼은, 사용자가 누르면 로그인이 취소되며, 게임은 로그인 콜백을 수신하고 flag는 eFlag_QQ_UserCancel이/가 됩니다.


기능 1.4: “계정 변환” 버튼의 경우, 사용자가 이 버튼을 누르면 모바일QQ 내에서 모바일QQ 계정을 변환할 수 있으며, 변환 후의 계정이 게임을 승인합니다.

3) 로그인에 성공하면, 게임으로 돌아가 구역 서비스를 선택하거나 직접 게임을 시작합니다.

(./res/login_qq3_c.png)


기능 1.5: 게임 자체의 “게임 진입” 버튼은 MSDK 기능과는 관련이 없습니다.


기능 1.6: 게임 “계정 변환” 버튼은, MSDK의 로그아웃 인터페이스를 호출한 후에 게임 로그인 페이지로 돌아갑니다.

기능2 위챗 로그인

MSDK 인터페이스를 호출해 위챗 클라이언트를 풀업해 플레이어에게 게임을 승인하도록 안내할 수 있습니다. 로그인 절차는 다음과 같습니다.

1) 게임 로그인 페이지에서 “위챗 친구와 플레이하기”를 클릭

(./res/login_wx1_c.png)

2) 위챗 로그인 페이지에서 승인 완료

(./res/login_wx2_c.png)


기능 2.1: 승인된 로그인 버튼을 클릭하면 게임에 대한 로그인 승인이 완료됩니다.


기능 2.2: 사용자가 게임에 승인한 권한 목록에 대해서는, 그중에서 “자신과 해당 앱을 공동으로 사용하는 친구 찾기” 항목은 사용자 관계 사슬을 획득할 수 있음을 나타냅니다. 이 항목의 승인은 우수한 유형의 게임이 PR2 단계에서 협력 프로젝트 팀이 개통을 신정합니다. 구체적인 정보에 대해서는 게임의 Tencent 접촉 담당자에게 문의할 수 있습니다.


기능 2.3: "돌아가기” 버튼은, 사용자가 누르면 로그인이 취소되며, 게임은 로그인 콜백을 수신하고 flag는 eFlag_WX_UserCancel이/가 됩니다.


기능 2.4: "재시도” 버튼은, 사용자가 이 버튼을 클릭하면 위챗 App 상에서 승인 로그인을 재시도합니다.

기능 3 게스트 로그인

애플의 심사는 사용자가 어떠한 계정 비밀번호도 제공하지 않은 상황 하에서 전체 게임 프로세스를 체험할 수 있도록 할 것을 요구하기 때문에, MSDK는 게스트 로그인을 제공함으로써 귀하께서 게임을 신속히 액세스해 해당 요구 사항을 충족시킬 수 있도록 합니다. 현재 게스트 로그인 기능은 iOS 클라이언트에 한정됩니다. 또한, 게스트 모드은 본체 체험에 한정되며, 기기의 게스트 데이터를 변환하면 변화가 발생할 수 있습니다. 게임은 아래 방식을 참조해 사용자에게 친구 메시지를 보낼 수 있습니다.

(./res/login_guest.png)

액세스 내비게이션

1 사전 요구 사항

1) 귀하께서는 Tencent 오픈 플랫폼 상에서 게임 등록을 하시고 심사에 통과하셨거나, 귀하의 Tencent 연락인이 내부 채널을 통해 귀하의 게임 등록을 도와드렸습니다.

2) 초기화 모듈 설명에 따라 초기화를 완료했습니다.

3) 귀하의 게임 로그인 권한이 개통되었음을 확인합니다. 게임 등록 후 이 권한은 이미 기본적으로 개통되어 있으며, 귀하께서 로그인 인터페이스를 호출해 "-303, no permission"을 회신하시려면, MSDK 통합 및 테스트 지원 담당자에게 연락해 주십시오.

2 Demo 예시를 참고하십시오.

모바일QQ 로그인의 예시는 MSDKDemo/LoginViewController.mm의 로그인 섹션을 참조하십시오.

위챗 로그인의 예시는 MSDKDemo/LoginViewController.mm의 로그인 섹션을 참조하십시오.

3 이 모듈의 다른 인터페이스 호출

앞의 1단계/2단계를 완료하면 이 모듈에 완벽하게 액세스한 것이 되며, 이 모듈의 다른 인터페이스를 호출할 수 있으며 추가적인 설정은 필요없습니다. 이 모듈의 각 부분에 대한 설명은 다음과 같습니다.

1) 승인 로그인: 모바일QQ/위챗 클라이언트 또는 web 페이지(모바일QQ 미설치 시)를 풀업해 승인합니다.

2) 게스트 로그인: 게스트 모드 승인.

3) 다른 계정 처리: 모바일QQ/위챗 플랫폼에서 다른 계정으로 로그인한 다른 계정 환경을 처리하도록 요청합니다.

4) 토큰 획득: 게임에서 토큰이 필요한(예: 결제) 경우에 이 인터페이스를 호출해 현재 사용자의 토큰 정보를 획득할 수 있습니다.

5) 로그인 나가기: 사용자가 로그아웃하거나 계정을 변환해야 할 때, 이 인터페이스를 호출해 로그인 사용자의 토큰 정보를 삭제할 수 있습니다.

승인된 로그인

개요 설명

모바일QQ/위챗 클라이언트 또는 web 페이지(모바일QQ 비 설치 시)를 풀업해 승인하며, 사용자 승인 이후에 OnLoginNotify를 통해 게임에서 획득한 LoginRet 로그인 정보를 통지합니다.

콜백 등록

1) 기능 설명

MSDK 로그인 콜백을 받으려면 콜백 Observer를 설정해야 하며, 게임을 기동하는 두 개의 액세스 포인트에 설정할 것을 권장합니다. 로그인 결과는 콜백 OnLoginNotify를 통해 귀하께 통지할 수 있습니다.

2) 인터페이스 선언
void WGSetObserver(WGPlatformObserver* pObserver);
3) 파라미터 설명
파라미터 명칭 유형 설명
pObserver WGPlatformObserver 카테고리 로그인 결과 정보 유형의 구체적인 구성원은 점프해 확인하십시오.
4) 반환값

없음

5) 예시 코드
//콜백 설정
MyObserver* ob = MyObserver::GetInstance();

WGPlatform::GetInstance()->WGSetObserver(ob);



//콜백 예시

void MyObserver::OnLoginNotify(LoginRet& loginRet)

{

    if(loginRet.flag == eFlag_Succ)

    {

        //로그인 성공

        //게임 TODO: 게임 진입

    }

    else if (loginRet.flag == eFlag_NeedRealNameAuth)

    {

        //실명 인증을 해야 하며, 작업은 자체적으로 실명 인증 절차를 설정할 수 있음. info.plist 내에서 MSDK_REAL_NAME_AUTH_SWITCH을 설정하고, 기본값은 0이 됨

        //0, 작업에서 어떠한 조작도 하지 않고 로그인 페이지에 계속 있으면 되며, MSDK에서 자동으로 실명 등록 인터페이스가 팝업되어 사용자에게 등록을 안내하고, 등록을 완료하면 사용자의 재로그인을 안내함.

        //1, 작업에서 어떠한 조작도 하지 않고 로그인 페이지에 계속 있으면 되며, MSDK에서 자동으로 실명 등록 인터페이스가 팝업되어 사용자에게 등록을 안내함. 작업은 로그인 콜백을 다시 모니터링해야 하며 실명 등록에 성공하면 MSDK는 자동으로 로컬 토큰 로그인 인터페이스를 호출해 자동 로그인할 수 있음

    }

    else

    {

        //로그인 실패

        //게임 TODO: flag에 따라 플레이어 관련 정보를 제시

    }

}
6) 특수 설명

없음

7) 명칭 해석
명칭 설명 지원 플랫폼 호출 인터페이스
승인된 로그인 게임에서 플랫폼 승인 인터페이스를 풀업해 사용자가 게임의 로그인에 필요한 토큰 획득을 승인하도록 안내합니다. 모바일 QQ/위챗 WGLogin
빠른 로그인 플레이어의 조작으로 플랫폼에서 게임을 풀업할 때 로그인 관련 토큰 정보를 투명 전송하게 함으로써 게임에 로그인할 수 있게 합니다. 모바일QQ 없음
자동 로그인 이전에 이미 모바일QQ 또는 위챗에서 게임을 승인한 적이 있을 경우, 다음 게임 기동 시에는 로컬에 저장된 토큰을 이용해 직접 로그인할 수 있으므로 모바일QQ/위챗을 다시 불러오지 않아도 됩니다. 모바일 QQ/위챗 WGLogin
자동 새로 고침 MSDK는 자동 새로고침 기능을 위챗 토큰 인터페이스에 제공합니다. MSDK 제공 기능 없음
다른 계정 현재 게임 내에 로그인한 계정과 플랫폼 로그인 계정이 일치하지 않습니다. MSDK 제공 기능 WGSwitchUser

ePlatform 정의 설명

LoginRet 정의 설명

권장 로그인 절차

(./res/login.png)

로그인 호출

1) 기능 설명

귀하는 WGLogin 인터페이스 호출을 통해 플랫폼이 승인 로그인 또는 자동 로그인을 호출하도록 지정할 수 있습니다. 호출 결과는 콜백 OnLoginNotify을 통해 귀하께 통지할 수 있고 함수 선언 및 호출 예시 코드는 다음과 같습니다.

2) 인터페이스 선언
void WGLogin(ePlatform platform = ePlatform_None);
3) 파라미터 설명
파라미터 명칭 유형 설명
platform ePlatform 열거 게임이 승인 로그인을 요구하는 플랫폼 유형
4) 반환값

없으며, 등록 정보는 OnLoginNotify 콜백을 통해 게임에 반환합니다.

5) 예시 코드
//QQ 로그인, QQ 로그인 전에 QQ 관련 권한을 설정해야 함

WGPlatform::GetInstance()->WGSetPermission(eOPEN_ALL);

WGPlatform::GetInstance()->WGLogin(ePlatform_QQ);

//위챗 로그인

WGPlatform::GetInstance()->WGLogin(ePlatform_Weixin);

//게스트 로그인(iOS 한정)

WGPlatform::GetInstance()->WGLogin(ePlatform_Guest);
6) 특수 설명

위챗과 모바일QQ 각자의 bug로 인해, 게임으로 돌아온 후 여러 상황 하에서 로그인 콜백을 받지 못할 수 있습니다. 게임 WGLogin 호출 후에 게임으로 돌아왔을 때는 1건의 시간 초과 판단을 권장하며, 15초를 경과할 경우 로그인 기한 만료가 됩니다. 그중 수신하지 못한 콜백 환경에는 다음이 포함되나 그에 한정되지 않습니다.


1) iOS9 이상이 시스템의 경우, 승인 페이지 좌측 상단 모서리의 시스템 자체 “xx 게임으로 돌아가기” 버튼을 클릭하면 로그인 콜백이 없습니다.

7) 용어 해석

없음

로그인 호출(3.0.8 이상 버전에서 사용)

1) 기능 설명

중복 클릭 방지 기능 및 시간 초과 방지 기능이 있으며, 귀하는 WGLogin 인터페이스 호출을 통해 플랫폼이 승인 로그인 또는 자동 로그인을 호출하도록 지정할 수 있습니다. 호출에 성공하면 eFlag_Succ를 회신하며, 로그인 중일 때는 eFlag_Logining를 회신합니다. 회신 결과는 콜백을 통해 귀하께 통지할 수 있고 함수 선언 및 호출 예시 코드는 다음과 같습니다.

2) 인터페이스 선언
eFlag WGLoginOpt(ePlatform platform = ePlatform_None, int overtime = DEFAUTL_LOGIN_OVERTIME);
3) 파라미터 설명
파라미터 명칭 유형 설명
platform ePlatform 열거 게임이 승인 로그인을 요구하는 플랫폼 유형
overtime int 로그인 시간 초과로, 시간 초과는 승인 회신 후 계산이 시작되며 단위는 초입니다.
4) 반환값

성공하면 eFlag_Succ를 회신하며, 현재 로그인 중일 경우 eFlag_Logining을 회신합니다. 로그인 정보는 WGPlatformObserver 콜백을 통해 게임에 회신합니다.

5) 예시 코드
//QQ 로그인, QQ 로그인 전에 QQ 관련 권한을 설정해야 함

WGPlatform::GetInstance()->WGSetPermission(eOPEN_ALL);

WGPlatform::GetInstance()->WGLogin(ePlatform_QQ);

//위챗 로그인

WGPlatform::GetInstance()->WGLoginOpt(ePlatform_Weixin,20);

//게스트 로그인(iOS 한정)

WGPlatform::GetInstance()->WGLoginOpt(ePlatform_Guest,20);
6) 특수 설명

msdk에서 로그인 시간 초과 콜백을 추가했습니다.

7) 용어 해석

없음

게스트 로그인

개요 설명

애플의 심사는 사용자가 어떠한 계정 비밀번호도 제공하지 않은 상황 하에서 전체 게임 프로세스를 체험할 수 있도록 할 것을 요구하기 때문에, MSDK는 게스트 로그인을 제공함으로써 귀하께서 게임을 신속히 액세스해 해당 요구 사항을 충족시킬 수 있도록 합니다. 현재 게스트 로그인 기능은 iOS 클라이언트에 한정됩니다. 게스트 모드 로그인 및 토큰 획득은 모바일QQ, 위챗이 모두 같으며, 승인된 로그인토큰 획득을 참조하십시오. 로그인 및 토큰 획득 게스트 모드 이외에도 다음 몇 가지 사항에 주의를 기울여야 합니다.

1 게스트 모드 결제 게스트 모드 결제는 모바일QQ, 위챗 결제와 마찬가지로, 먼저 Midas 결제(보충 발송) 등록 인터페이스를 호출한 후 결제 인터페이스를 호출하고, 결제 시에는 게임 모드의 session_id 및 session_type에 주의해야 합니다.

//결제 시 게스트 모드 session_id 및 session_type은 다음으로 고정: 

sessionId = "hy_gameid";

sessionType = "st_dummy";

2 게스트 모드를 지원하지 않는 인터페이스 일부 인터페이스와 관계 사슬, LBS, 공지 등의 인터페이스 게스트 모드는 지원되지 않으며, 게임이 게스트 모드 하에서 이들 인터페이스를 호출하면 반환값에 서로 상응하는 Ret의 flag는 eFlag_InvalidOnGuest가 되며, 해당 flag에 주의해 주십시오.

3 게스트 재설정 GameServer에서 관련 데이터를 삭제한 후, 게스트 재설정 인터페이스를 호출하여 MSDK에서 터미널에 남긴 Guest 계정 데이터를 삭제할 수 있으며, 다음에 Guest 모드로 로그인할 때 새로운 Guest 계정이 생성될 수 있습니다.

4 플레이어 알림 게스트 모드는 어떠한 계정 비밀번호도 필요로 하지 않으므로, 게스트 모드 계정, 게임 데이터는 로컬에서만 사용합니다. 다음의 일부 환경에서 게스트 데이터는 상실될 수 있습니다.

1) iPhone은 시스템 업그레이드 또는 다운그레이드 후에 재활성화해 새로운 iPhone으로 설정합니다.

2) iPhone 데이터 복원 및 삭제

3) 게임 삭제 및 재설치

사용자가 게스트 모드 로그인을 실시할 때 친구 알림을 실행할 수 있으며, 구체적인 알림 기능에 대해서는 다음을 참고하십시오.”

게스트 로그인 절차

Guest 모드에서 로그인은 등록 및 로그인의 두 가지 절차가 있습니다. 그러나, 두 환경의 차이는 MSDK에 의해 제거되며, 게임에서는 두 절차 사이의 차이에 관심을 기울이지 않아도 됩니다. 여기서는 절차에 대한 설명만 하겠습니다.

(./res/login_guest_flow.png)

계정 모드 및 Guest 모드 절차 비교

(./res/login_guest_compare.png)

등록 콜백

[승인된 로그인)#IOS_Login) 등록 콜백을 참조

로그인 인터페이스 호출

[승인된 로그인)#IOS_Login) 로그인 인터페이스 호출을 참조

게스트 id 새로고침 인터페이스 호출

1) 기능 설명

게스트 모드에서 id를 새로고침합니다.

2) 인터페이스 선언
void WGResetGuestID();
3) 파라미터 설명

없음

4) 반환값

없음

5) 예시 코드
WGPlatform::GetInstance()->WGResetGuestID();
6) 특수 설명

현재 네트워크 버전에서는, 사용자 데이터 상실을 방지하기 위해 게스트 재설정 인터페이스를 호출하지 마십시오.

7) 용어 해석

없음

제 3자 플랫폼 로그인 풀업

1) 기능 설명

모바일QQ 게임 목록에서, 또는 공유 링크에서 직접 모바일QQ의 로그인된 계정 정보를 게임에 전송해 로그인을 실시함으로써 게임의 반복 승인이 필요하지 않게 됩니다.

  • 환경 종속성:
  1. MSDK 1.8.0i 이상
  2. 모바일QQ 4.6.2 이상
  3. 게임 설정 scheme:

Alt text

  • 성공하면 풀업한 게임에 openId, accessToken, payToken, pf 및 pfKey를 보유합니다.
2) 인터페이스 선언

MSDK에서 제공하는 게임의 풀업된 콜백을 접수하기 위해서는, OnWakeupNotify 콜백을 처리할 필요가 있습니다.

  • 제 3자 플랫폼 로그인 풀업 및 다른 계정 결과는 wakeupRet의 flag 내에서 회신하며, 관련 flag 설명은 다음과 같습니다.
eFlag_Succ:  

다른 계정이 없으며 환기 성공. 이러한 상황 하에서 App의 URL 풀업은토큰을 보유하지 않으며, 이전 버전의 플업과 일치합니다. 

eFlag_AccountRefresh:  

다른 계정이 없으며, MSDK에서 App의 URL이 보유한 토큰 정보 풀업을 통해 로컬 계정 토큰을 새로고침했습니다. 

eFlag_UrlLogin: 

다른 계정이 없으며, 게임에서 제 3자 플랫폼 정보를 통해 로그인 성공했습니다. 게임에서 이 flag를 수신한 후 직접 LoginRe 구조체 내 토큰을 읽어들여 게임 승인 절차를 수행합니다. 

eFlag_NeedLogin: 

게임 로컬 계정과 풀업 계정 모두 로그인 불가. 게임에서 이 flag를 수신한 후 로그인 페이지를 팝업 표시해 사용자에게 로그인하게 해야 합니다. 

eFlag_NeedSelectAccount: 

게임 로컬 계정과 풀업 계정에 다른 계정이 존재하고, 게임에서 flag를 수신한 후 대화창을 팝업 표시해 사용자에게 로그인 계정을 선택하게 해야 합니다. 

flag가 eFlag_NeedSelectAccount인 경우, 게임은 대화창을 팝업 표시해 사용자에게 로그인 계정을 선택하게 해야 하며, 해당 계정은 제 3자 플랫폼에서 보유한 계정입니다. 이것은 모바일QQ 플랫폼에서 반드시 구현하도록 요구하는 논리이며, 구현하지 않으면 심사 시에 온라인이 거부될 수 있습니다.

메시지 예시(인터페이스는 각 게임별로 다르게 구현)

Alt text 사용자 선택 후, WGSwitchUser 인터페이스를 호출해 다른 계정 후속 논리 처리를 수행합니다.(2개의 선택항 모두 아래 인터페이스를 호출해야 합니다. 사상세 정보는 예시 코드 참조)

bool WGSwitchUser(bool flag);

설명: 외부 풀업 URL을 통해 로그인합니다. 해당 인터페이스는 다른 계정 환경이 발생했을 때 사용하며, 사용자가 외부 풀업 계정 사용을 선택할 때 호출합니다.

파라미터:

  • flag
  • YES일 경우, 사용자를 외부 계정으로 변환해야 한다는 의미이며, 이때 해당 인터페이스는 이전에 저장한 다른 계정 로그인 데이터를 사용해 로그인할 수 있습니다. 로그인 성공 후에 onLoginNotify를 통해 콜백, 토큰이 없을 경우, 또는 토큰이 무효한 함수일 경우, NO를 반환할 수 있으며, onLoginNotify 콜백이 발생하지 않습니다.
  • NO일 경우, 사용자가 계속해서 본래의 계정을 사용한다는 의미이며, 이때 저장된 다른 계정 데이터를 삭제해 혼합이 발생하는 것을 막습니다.

돌아가서 토큰이 없을 경우, 또는 토큰이 무효한 경우 NO를 반환할 수 있습니다. 다른 상황에서는 YES를 회신합니다.

3) 파라미터 설명
파라미터 명칭 유형 설명
wakeupRet WakeupRet 구조체 게임 풀업 정보
4) 반환값

없음

5) 예시 코드
  • app 풀업 시에 콜백 코드 설정 추가
-(BOOL)application:(UIApplication*)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation

{

    NSLog(@"url == %@",url);

    WGPlatform* plat = WGPlatform::GetInstance();

    WGPlatformObserver *ob = plat->GetObserver();

    if (!ob) {

        MyObserver* ob = new MyObserver();

        ob->setViewcontroller(self.viewController);

        plat->WGSetObserver(ob);

    }

    return [WGInterface HandleOpenURL:url];

}
  • 콜백 코드 풀업의 예시는 다음과 같습니다.
void MyObserver::OnWakeupNotify (WakeupRet& wakeupRet)

{

    switch (wakeupRet.flag) 

    {

        case eFlag_Succ:[viewController setLogInfo:@"환기 성공"];

        break;

        case eFlag_NeedLogin:[viewController setLogInfo:@"다른 계정 발생, 로그엔 페이지에 진입해야 함"];

        break;

        case eFlag_UrlLogin:[viewController setLogInfo:@"다른 계정 발생, 외부 풀업을 통해 로그인 성공"];

        break;

        case eFlag_NeedSelectAccount: 

        {

            [viewController setLogInfo:@"다른 계정이 발생했으며 사용자에게 선택 메시지를 표시해야 함"];

            UIAlertView *alert = [[[UIAlertView alloc]initWithTitle:@"다른 계정" message:@"다른 계정이 발견되었으며 사용자에게 선택 메시지를 표시해야 함" delegate:viewController cancelButtonTitle:@"변환하지 않고 본래의 계정 사용" otherButtonTitles:@"외부 계정 로그인으로 변환", nil] autorelease];

             [alert show];

        }

        break;

        case eFlag_AccountRefresh:[viewController setLogInfo:@"외부 계정과 이미 로그인한 계정이 같습니다. 외부 토큰을 사용해 로컬 토큰을 업데이트하십시오."];

        break;

        default: 

        break;

    }

    if(eFlag_Succ == wakeupRet.flag ||

eFlag_NeedLogin == wakeupRet.flag ||

eFlag_UrlLogin == wakeupRet.flag ||

eFlag_NeedSelectAccount == wakeupRet.flag ||

eFlag_AccountRefresh == wakeupRet.flag)

    {

        [viewController setLogInfo:@"환기 성공"];

    }

    else

    {

        [viewController setLogInfo:@"환기 실패"];

    }

} 

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

{

    BOOL switchFlag = NO;

    switch (buttonIndex) 

    {

        case 0: 

        NSLog(@"사용자가 계정 변환하지 않음을 선택");

        break;

        case 1: 

        {

            NSLog(@"사용자가 계정 변환을 선택");

            switchFlag = YES;

        }

         break;

        default: 

         break;    

    }

    WGPlatform* plat = WGPlatform::GetInstance();

    plat->WGSwitchUser(switchFlag);
6) 특수 설명
  • 모바일QQ 버전 4.6 이상에서만 빠른 로그인을 지원합니다.
  • URL Types 내 scheme이 tencentlaunch+AppID 풀업을 설정해야 할 때만, 로그인 정보를 보유합니다.

다른 계정 처리

종합 설명

사용자가 플랫폼에서 게임을 풀업해 진입하면, 계정 불일치로 인하여(플랫폼 불일치 또는 플랫폼은 일치하나 계정이 불일치), 게임 팝업창에서 다른 계정을 알리는 메시지가 표시됩니다. 다른 계정 상황에 대한 상세한 설명은, 다른 계정의 설명 문서

처리 콜백

MSDK에서 제공하는 게임의 풀업된 콜백을 접수하기 위해서는, OnWakeupNotify 콜백을 처리할 필요가 있습니다.

1) 기능 설명

플랫폼에서 게임을 풀업해 게임이 보유하고 있는 정보에 진입한 후, OnWakeupNotify를 통해 게임에 전달합니다.

2) 인터페이스 선언
virtual void OnWakeupNotify(WakeupRet& wakeupRet) = 0;
3) 파라미터 설명
파라미터 명칭 유형 설명
wakeupRet WakeupRet 구조체 게임 풀업 정보
4) 반환값

없음

5) 예시 코드
void MyObserver::OnWakeupNotify(WakeupRet& wakeupRet)

{

    switch (wakeupRet.flag)

    {

        case eFlag_Succ: 

            //로컬 계정 로그인 성공 후 직접 게임 진입이 가능하며, 자동 로그인 인터페이스 WGLogin()을 호출해 로그인 콜백을 기다릴 수 있습니다.

            break;

        case eFlag_NeedLogin: 

            //유효한 토큰이 없을 경우, 게임에서 로그아웃되며 사용자에게 다시 로그인하게 함

            break;

        case eFlag_UrlLogin: 

            //로컬에 계정 정보가 없으며 자동으로 풀업한 계정으로 로그인하고 로그인 콜백을 기다림

            break;

        case eFlag_NeedSelectAccount: 

            // 팝업창을 띄어 고객으로 하여금 로그인해야 할 계정을 선택하게 하며, 사용자의 선택에 따라 WGSwitchUser 인터페이스를 호출

            break;

        case eFlag_AccountRefresh: 

            //외부 계정과 이미 로그인한 계정이 같음. 외부 토큰을 사용해 로컬 토큰을 업데이트해야 함

            break;

        default: 

            break;

    }

}
6) 특수 설명

eFlag_NeedSelectAccount를 수신하면 바로 다른 계정 상황이 촉발되며, 이때 게임에서 팝업창을 띄어 사용자로 하여금 로그인해야 할 계정을 선택하게 하며, 사용자의 선택에 따라 WGSwitchUser:인터페이스를 호출한 후 WGSwitchUser:가 true를 회신하는 경우, OnLoginNotify 콜백이 계정 변환 결과를 획득하기를 기다리며, WGSwitchUser:가 false를 회신하는 경우, 로그인 페이지로 돌아가 플레이어로 하여금 다시 승인 로그인하도록 해야 합니다.

7) 용어 해석

ePlatform 정의 설명

WakeupRet 정의 설명

계정 변환

1) 기능 설명

다른 계정으로 판단한 wakeupRet.flag가 eFlag_NeedSelectAccount일 경우, 게임은 팝업창을 띄어 사용자에게 알리고 로컬 계정 선택 또는 게임 계정 로그인 기능을 풀업해야 하며, 게임은 사용자의 선택 결과에 따라 인터페이스 WGSwitchUser:를 호출해 사용자 로그인 작업을 완료해야 합니다.

2) 인터페이스 선언
bool WGSwitchUser(bool flag);
3) 파라미터 설명
파라미터 명칭 유형 설명
flag bool true: 외부 계정으로 변환됨, false: 본래의 계정 계속 사용
4) 반환값

true: 이 계정에 토큰이 있음을 나타냅니다. MSDK에서 이 토큰의 유효성을 검증하고 OnLoginNotify 내에서 검증 결과를 회신합니다.

false: 이 계정에 토큰이 없거나 토큰이 규정에 어긋남을 나타냅니다. 직접 로그인할 수 있으며, 사용자로 하여금 다시 승인 로그인하게 합니다.

5) 예시 코드
WGPlatform* plat = WGPlatform::GetInstance();

BOOL success = plat->WGSwitchUser(switchFlag);

if (success)

{

    //변환 성공, OnLoginNotify 콜백 대기

}

else

{

    //변환 실패, WGLogout 인터페이스를 호출하고 로그인 페이지에서 나감

    plat->WGLogout();

}
6) 특수 설명

없음

7) 용어 해석

없음

토큰 획득

1) 기능 설명

로그인 콜백 중에 LoginRetTokenRet을 해석해 로그인 콜백 토큰을 획득할 수 있으며, 그 외에도, WGGetLoginRecord 인터페이스를 호출하여 현재의 로그인 토큰을 획득할 수 있습니다. LoginRet 토큰 정보 안에는 플레이어의 openid,pf,pfkey,LoginRet 내 TokenRet이 포함하고 있는 pay_token(QQ 로그인 시 보유), access_token(위챗 로그인 시 보유) 등의 정보가 담겨 있습니다. 귀하께서 결제하실 때 해당 정보를 이용할 수 있습니다.

2) 인터페이스 선언
int WGGetLoginRecord(LoginRet& loginRet);
3) 파라미터 설명
파라미터 명칭 유형 설명
LoginRet LoginRet 구조체 로그인 토큰 정보
4) 반환값

반환값은 토큰 정보의 대응하는 로그인 플랫폼

5) 예시 코드
LoginRet ret;

WGPlatform::GetInstance()->WGGetLoginRecord(ret);

if (ret.flag == eFlag_Succ)

{

    //토큰 획득 성공, 토큰 정보를 정상적으로 읽어들일 수 있음

}

else if (ret.flag == eFlag_Checking_Token)

{

    //MSDK에서 토큰 유효성을 검사 중임. 3~5초 후에 다시 획득할 수 있습니다.

}

else

{

    //로컬에 토큰이 없거나 토큰이 무효임

}
6) 특수 설명
  1. 귀하께서 이 인터페이스를 통해 획득한 토큰은 이후에 LoginRet.flag를 판단해야 하며, 0(eFlag_Succ)일 경우에는 토큰이 정상적으로 유효하고 직접 사용할 수 있습니다. 5001(eFlag_Checking_Token)일 경우, 이는 MSDK가 현재 토큰을 검증 중임을 나타내며, 이때 획득한 토큰은 무효입니다. 이후에 재시도해야 합니다.

  2. 해당 인터페이스는 로컬 데이터베이스 검색을 포함할 수 있으며, 높은 빈도의 호출은 성능에 영향을 줄 수 있으므로 높은 빈도의 호출은 바람직하지 않습니다. unity 게임의 경우, update 함수를 빈번히 호출하지 마십시오.

7) 용어 해석

LoginRet 정의 설명

실명제

문화부의 <네트워크 게임 관리 임시 시행법>의 관련 요구 사항에 따르면, 네트워크 게임 사용자는 유효한 신분 증명 자료를 사용해 실명 등록을 해야 게임에 로그인할 수 있습니다. 게임 개발의 부담을 경감하기 위해 당사는 게임을 위한 실명 인증 인터페이스 및 완전한 인터페이스 세트를 구축해, 해당 모듈을 통해 귀하께서는 수 분 만에 실명 인증 기능을 완성할 수 있습니다.

실명제에 관한 상세 정보 설명은 실명제 설명 문서

로그아웃

1 종합 설명

WGLogout 인터페이스를 호출해 로그아웃해 로컬 토큰을 삭제할 수 있습니다.

2 콜백

없음

3. 호출 인터페이스

1) 기능 설명

로그인 콜백 토큰 획득

2) 인터페이스 선언
bool WGLogout();
3) 파라미터 설명

없음

4) 반환값

true 회신인 경우, 반환값을 처리하지 않아도 됩니다.

5) 예시 코드
WGPlatform::GetInstance()->WGLogout();
6) 특수 설명

없음

7) 명칭 해석

없음

MSDK 토큰 자동 새로고침 프로세스

MSDK2.6.0 이후 버전의 경우, 이전 버전 로그인 절차 지원을 기초로 새로운 절차를 강화하여, 작업은 WGLogin, WGGetLoginRecord 두 인터페이스에만 주의를 기울이면 로그인 및 토큰 처리를 완료할 수 있습니다.

  • 게임 자동 로그인의 호출 논리:

게임 기동으로 직접 WGLogin() 인터페이스를 호출해 OnLoginNotify() 콜백을 기다리며 그 절차는 다음과 같습니다.

(./res/login_auto_login.png)

  • 게임에서 로그인 토큰을 필요로 할 때의 호출 논리:

WGGetLoginRecord() 인터페이스 호출의 반환값이 flag = 5001일 때는 MSDK 내부에서 현재 토큰 유효성을 검증하고 있음을 나타내며, 수 초 이내에 재호출해 획득할 수 있습니다. 그 절차는 다음과 같습니다.

(./res/login_get_login_record.png)

  • MSDK 내부 토큰 검증, 새로고침 논리:

(./res/login_auto_refresh_token.png)

자주 묻는 질문

  • 게임의 프론트/백그라운드 변환 시에 토큰 검사를 이용합니까?