개요
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”이 표시됩니다. java 코드 내 MSDK를 처음 실행한 후의 WGPlatform.WGSetPermission(WGQZonePermissions.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 iOS 게스트 로그인
애플의 심사는 사용자가 어떠한 계정 비밀번호도 제공하지 않은 상황 하에서 전체 게임 프로세스를 체험할 수 있도록 할 것을 요구하기 때문에, MSDK는 게스트 로그인을 제공함으로써 귀하께서 게임을 신속히 액세스해 해당 요구 사항을 충족시킬 수 있도록 합니다. 현재 게스트 로그인 기능은 iOS 클라이언트에 한정됩니다.
(./res/login_guest.png)
4 위챗 QR코드 스캔 로그인
위챗 모바일이 설치되어 있지 않은 휴대전화기 또는 Pad 유형, TV 유형 제품 상에서 코드 스캔 로그인 인터페이스를 호출해 보다 양호한 사용자 체험을 할 수 있습니다.
(./res/login_wx_qrcode.png)
액세스 내비게이션
1 사전 요구 사항
1) 귀하께서는 Tencent 오픈 플랫폼 상에서 게임 등록을 하시고 심사에 통과하셨거나, 귀하의 Tencent 연락인이 내부 채널을 통해 귀하의 게임 등록을 도와드렸습니다.
2) 초기화 모듈 설명에 따라 초기화를 완료했습니다.
3) 귀하의 게임 로그인 권한이 개통되었음을 확인합니다. 게임 등록 후 이 권한은 이미 기본적으로 개통되어 있으며, 귀하께서 로그인 인터페이스를 호출해 "-303, no permission"을 회신하시려면, MSDK 통합 및 테스트 지원 담당자에게 연락해 주십시오.
2 Demo 예시를 참고하십시오.
모바일 QQ 로그인 예시는 Assets\Example\MsdkDemo.cs 스크립트의 ShowQQ() 메소드 내 로그인 부분을 참조하십시오.
위챗 로그인 예시는 Assets\Example\MsdkDemo.cs 스크립트의 ShowWX() 메소드 내 로그인 부분을 참조하십시오.
게스트 로그인 예시는 Assets\Example\MsdkDemo.cs 스크립트의 ShowNotice() 메소드 내 로그인 부분을 참조하십시오.
3 인터페이스의 버튼 결합
다음은 Unity 네이티브의 UGUI를 예로 들어 로그인 인터페이스를 UGUI의 Button에 결합하는 방법을 설명한 것입니다. NGUI 결합 메소드도 유사하므로 이 예시를 참조할 수 있습니다.
1) 속성 화면을 통한 인터페이스 결합
- Button 생성
Hierarchy 화면에서 Create -> UI -> Button을 선택합니다.
(./res/login_button1.png)
- C# 스크립트 생성
Project 화편 하단 우측 키를 클릭해 메뉴를 불러오고 여기서 Create -> C# Script를 선택한 후 C# 스크립트 이름을 ClickTest.cs(임의의 이름 사용 가능)로 정합니다.
(./res/login_button2.png)
- 스크립트 편집
방금 생성된 C#스크립트 ClickTest.cs를 더블클릭해, 열린 IDE 내에서 스크립트를 편집합니다.
using UnityEngine;
using System.Collections;
// Step1 MSDK 라이브러리 리퍼런스
using Msdk;
public class ClickTest : MonoBehaviour {
void Start () {
// Step2 PC 테스트 디버깅 환경 사용 여부 설정
WGPlatform.SetPCDebug(true);
// Step3 MSDK 관계 사슬 콜백 설정
MsdkEvent.Instance.LoginRelationEvent += LoginCallback;
// Step4 MSDK 초기화
WGPlatform.Instance.Init();
}
// Button 결합해야 하는 메소드, 이름은 임의로 정할 수 있음
public void Clicked()
{
// 버튼 클릭 후에 MSDK 로그인 인터페이스 호출
WGPlatform.Instance.WGLogin(ePlatform.ePlatform_QQ);
}
// MSDK 관계 사슬 콜백
public void RelationCallback(RelationRet ret)
{
Debug.Log(ret.ToString());
}
}
그중 MSDK 초기화 단계의 상세 설명에 대해서는 MSDK 초기화를 참조하십시오.
- 스크립트를 Canvas의 구성 요소로 설정합니다.
Hierarchy 화면에서 Canvas를 선택해 Inspector 화면을 호출하고, ClickTest.cs 스크립트를 Inspector 화면의 최하단으로 드래그합니다. 결과는 그림과 같습니다.
(./res/login_button3.png)
- 메소르를 버튼에 결합
Hierarchy 화면에서 Button을 클릭해 Inspector 화면을 호출하고, Inspector 화면 하단의 번호 추가를 클릭하여 원클릭 이벤트를 추가합니다.
(./res/login_button4.png)
방금 추가한 항목 옆의 원을 클릭해 클릭 이벤트 GameObject를 결합하고, 여기서 결합했던 ClickTest.cs 스크립트의 Canvas를 선택합니다.
(./res/login_button5.png)
No Function 항목을 클릭해 클릭 촉발 메소트 Clicked()를 선택합니다.
(./res/login_button6.png)
2) 코드를 통한 동적인 인터페이스 결합
- 버튼 생성
1) “속성 화면을 통한 인터페이스 결합”과 동일하게 Button을 생성합니다. 그런 다음, Button의 Inspector 화면에서 Button의 명칭을 LoginButton(임의의 명칭 사용 가능)으로 정하고 코드 내에서 이 버튼을 획득합니다.
(./res/login_button11.png)
- 스크립트 생성 및 편집
ClickTest.cs 스크립트를 생성합니다. 코드는 다음과 유사합니다.
using UnityEngine;
using System.Collections;
using UnityEngine.Events;
using UnityEngine.UI;
// Step1 MSDK 라이브러리 리퍼런스
using Msdk;
public class ClickTest : MonoBehaviour {
void Start () {
// Step2 PC 테스트 디버깅 환경 사용 여부 설정
WGPlatform.SetPCDebug(true);
// Step3 MSDK 관계 사슬 콜백 설정
MsdkEvent.Instance.LoginRelationEvent += LoginCallback;
// Step4 MSDK 초기화
WGPlatform.Instance.Init();
// 버튼 이름을 통해 GameObject 획득
GameObject btnObj = GameObject.Find("LoginButton");
// Button 실례 획득
Button loginBtn = btnObj.GetComponent<Button>();
// 클릭이벤트 설정
loginBtn.onClick.AddListener(delegate() {
// 버튼 클릭 후에 MSDK 로그인 인터페이스 호출
WGPlatform.Instance.WGLogin(ePlatform.ePlatform_QQ);
});
}
// MSDK 로그인 콜백
public void RelationCallback(LoginRet ret)
{
Debug.Log(ret.ToString());
}
}
그중 MSDK 초기화 단계의 상세 설명에 대해서는 MSDK 초기화를 참조하십시오.
4 검색 실행 결과
Unity 중간 상단의 삼각형 아이콘을 클릭해 PC 환경 하에서 프로그램을 실행한 후에 Game 화면의 버튼을 클릭합니다.
(./res/login_button7.png)
이때 Console을 확인하면 다음과 같은 로그인 인터페이스 호출 성공 및 콜백한 로그를 보게 됩니다.
(./res/login_button8.png)
마지막으로, 설치 패키지를 열고 휴대전화기에 설치하면 버튼이 표시된 후에 모바일QQ를 풀업하고 로그인 승인을 마칩니다.
5 이 모듈의 다른 인터페이스 호출
앞의 1-4 단계를 완료하면 이 모듈에 완벽하게 액세스한 것이 되며, 이 모듈의 다른 인터페이스를 호출할 수 있으며 추가적인 설정은 필요없습니다. 이 모듈의 각 부분에 대한 설명은 다음과 같습니다.
승인 로그인: 모바일QQ/위챗 클라이언트 또는 web 페이지(모바일QQ 미설치 시)를 풀업해 승인합니다.
게스트 로그인: MSDK에서 제공하는 게스트 모드는 사용자가 어떠한 계정 비밀번호도 제공하지 않는 상황에서도 전체 게임 프로세스를 체험할 수 있도록 해 줍니다.
스캔 로그인: 사용자 기기에 위챗이 설치되어 있지 않은 상황에서, 게임은 코드 스캔 로그인을 통해 사용자가 다른 기기의 위챗에서 승인을 실시할 수 있게 해 줍니다.
다른 계정 처리: 모바일QQ/위챗 플랫폼에서 다른 계정으로 로그인한 다른 계정 환경을 처리하도록 요청합니다.
토큰 획득: 게임에서 토큰이 필요한(예: 결제) 경우에 이 인터페이스를 호출해 현재 사용자의 토큰 정보를 획득할 수 있습니다.
로그인 나가기: 사용자가 로그아웃하거나 계정을 변환해야 할 때, 이 인터페이스를 호출해 로그인 사용자의 토큰 정보를 삭제할 수 있습니다.
승인된 로그인
1 개요 설명
모바일QQ/위챗 클라이언트 또는 web 페이지(모바일QQ 비 설치 시)를 풀업해 승인하며, 사용자 승인 이후에 LoginEvent를 통해 게임에서 획득한 LoginRet 로그인 정보를 통지합니다.
2 콜백
1) 기능 설명
MSDK의 로그인 콜백을 수신하기 위해, 귀하는 콜백을 등록 처리할 필요가 있으므로, Awake 함수 내에서의 등록을 권장합니다. 로그인 결과는 콜백을 통해 귀하께 통지할 수 있습니다.
2) 인터페이스 선언
public delegate void LoginDelegate(LoginRet loginRet);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
LoginRet | LoginRet 카테고리 | 로그인 결과 정보 유형의 구체적인 구성원은 점프해 확인하십시오. |
4) 반환값
없음
5) 예시 코드
MsdkEvent.Instance.LoginEvent += (LoginRet loginRet) =>
{
switch (loginRet.flag)
{
case eFlag.eFlag_Succ:
// 로그인 성공, 각종 토큰을 읽어들일 수 있음
// 게임 TODO: 게임 진입
int platform= loginRet.platform;
if((int) ePlatform.ePlatform_Weixin == platform) {
loginState = "위챗 로그인 성공";
} else if((int) ePlatform.ePlatform_QQ == platform) {
loginState = "QQ 로그인 성공";
} else if((int) ePlatform.ePlatform_QQHall == platform) {
loginState = "로비 로그인 성공";
} else if((int) ePlatform.ePlatform_Guest == platform) {
loginState = "게스트 로그인 성공";
}
break;
// 게임 TODO: 로그인 실패 상황에 대해 각각 분별하여 처리하고, 일반적으로 모두 로그인 페이지로 돌아가 사용자에게 재승인하도록 안내함
case eFlag.eFlag_QQ_UserCancel:
// 플레이어가 승인 취소
case eFlag.eFlag_QQ_LoginFail
// QQ 로그인 실패
case eFlag.eFlag_QQ_NotInstall
// QQ 미설치
case eFlag.eFlag_Local_Invalid:
// 자동 로그인 실패, 로컬 토큰 기한 만료, 새로고침을 포함한 모든 오류
case eFlag.eFlag_WX_UserCancel:
// 플레이어가 승인 취소
case eFlag.eFlag_WX_NotInstall:
// 위챗 미설치
case eFlag.eFlag_WX_NotSupportApi:
// 위챗 버전 지원하지 않음
case eFlag.eFlag_WX_LoginFail:
<stong>//위챗 로그인 실패</stong>
default:
loginState = "로그인 실패";
message = loginRet.ToString();
break;
}
};
6) 특수 설명
없음
7) 명칭 해석
명칭 | 설명 | 지원 플랫폼 | 호출 인터페이스 |
---|---|---|---|
승인된 로그인 | 게임에서 플랫폼 승인 인터페이스를 풀업해 사용자가 게임의 로그인에 필요한 토큰 획득을 승인하도록 안내합니다. | 모바일 QQ/위챗 | WGLogin |
빠른 로그인 | 플레이어의 조작으로 플랫폼에서 게임을 풀업할 때 로그인 관련 토큰 정보를 투명 전송하게 함으로써 게임에 로그인할 수 있게 합니다. | 모바일QQ | 없음 |
자동 로그인 | 로그인 시에 플랫폼 파라미터를 지정하지 않으면, 모바일QQ 또는 위챗을 풀업할 수 없으며, 로컬의 유효한 토큰을 사용해야만 승인할 수 있습니다. | 모바일 QQ/위챗 | WGLogin(ePlatform.ePlatform_None) |
자동 새로 고침: | MSDK는 자동 새로고침 기능을 위챗 토큰 인터페이스에 제공합니다. | MSDK 제공 기능 | 없음 |
다른 계정 | 현재 게임 내에 로그인한 계정과 플랫폼 로그인 계정이 일치하지 않습니다. | MSDK 제공 기능 | WGSwitchUser |
QQ 로비 로그인: QQ 로비 로그인은 초기 보드 유형 게임이 QQ 게임 로비를 통해 전송 토큰을 풀업해 로그인하는 방식이며, QQ 게임 로비에 액세스하지 않는 게임이라면 관심을 기울이는 것이 좋습니다.
권장 로그인 절차
(./res/login.png)
3 로그인 호출
1) 기능 설명
귀하는 WGLogin 인터페이스 호출을 통해 플랫폼이 승인 로그인 또는 자동 로그인을 호출하도록 지정할 수 있습니다. 호출 결과는 콜백을 통해 귀하께 통지할 수 있고 함수 선언 및 호출 예시 코드는 다음과 같습니다.
2) 인터페이스 선언
void WGLogin(ePlatform platform);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
platform | ePlatform 열거 | 게임이 승인 로그인을 요구하는 플랫폼 유형 |
4) 반환값
없으며, 등록 정보는 LoginEvent 콜백을 통해 게임에 반환합니다.
5) 예시 코드
WGPlatform.Instance.WGLogin (ePlatform.ePlatform_QQ); //QQ 로그인
WGPlatform.Instance.WGLogin (ePlatform.ePlatform_Weixin); //위챗 로그인
WGPlatform.Instance.WGLogin (ePlatform.ePlatform_Guest); //게스트 로그인(iOS 한정)
6) 특수 설명
위챗과 모바일QQ 각자의 bug로 인해, 게임으로 돌아온 후 여러 상황 하에서 로그인 콜백을 받지 못할 수 있습니다. 게임 WGLogin 호출 후에 게임으로 돌아왔을 때는 1건의 시간 초과 판단을 권장하며, 15초를 경과할 경우 로그인 기한 만료가 됩니다. 그중 수신하지 못한 콜백 환경에는 다음이 포함되나 그에 한정되지 않습니다.
1) 위챗에 등록하지 않은 상황에서 게임이 위챗을 풀업해 사용자 ID와 비밀번호 입력 후 로그인할 경우, 로그인 콜백이 없을 수 있으며, 이는 위챗 클라이언트의 이미 알려져 있는 BUG입니다.
2) 위챗에 등록하지 않은 상황에서, 사용자 ID와 비밀번호 입력 인터페이스에서 직접 돌아가기를 클릭하면, 로그인 콜백이 없을 수 있으며, 이는 위챗 클라이언트의 이미 알려져 있는 BUG입니다.
3) iOS9 이상이 시스템의 경우, 시스템 좌측 상단 모서리의 “xx 게임으로 돌아가기”를 클릭하면 로그인 콜백이 없습니다.
7) 용어 해석
없음
4 로그인 호출(3.0.8 이상 버전에서 사용)
1) 기능 설명
중복 클릭 방지 기능 및 시간 초과 방지 기능이 있으며, 귀하는 WGLogin 인터페이스 호출을 통해 플랫폼이 승인 로그인 또는 자동 로그인을 호출하도록 지정할 수 있습니다. 호출에 성공하면 eFlag_Succ를 회신하며, 로그인 중일 때는 eFlag_Logining를 회신합니다. 회신 결과는 콜백을 통해 귀하께 통지할 수 있고 함수 선언 및 호출 예시 코드는 다음과 같습니다.
2) 인터페이스 선언
eFlag WGLoginOpt(ePlatform platform, int overtime);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
platform | ePlatform 열거 | 게임이 승인 로그인을 요구하는 플랫폼 유형 |
overtime | int | 로그인 시간 초과로, 시간 초과는 승인 회신 후 계산이 시작되며 단위는 초입니다. |
4) 반환값
없으며, 등록 정보는 LoginEvent 콜백을 통해 게임에 반환합니다.
5) 예시 코드
WGPlatform.Instance.WGLoginOpt (ePlatform.ePlatform_QQ,20); //QQ 로그인
WGPlatform.Instance.WGLoginOpt (ePlatform.ePlatform_Weixin,20); //위챗 로그인
WGPlatform.Instance.WGLoginOpt (ePlatform.ePlatform_Guest,20); //게스트 로그인(iOS 한정)
6) 특수 설명
msdk에서 로그인 시간 초과 콜백을 추가했습니다.
7) 용어 해석
없음
게스트 로그인
1 개요 설명
애플의 심사는 사용자가 어떠한 계정 비밀번호도 제공하지 않은 상황 하에서 전체 게임 프로세스를 체험할 수 있도록 할 것을 요구하기 때문에, 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) 플레이어 알림
게스트 모드는 어떠한 계정 비밀번호도 필요로 하지 않으므로 게스트 모드 계정, 게스트 데이터는 로컬 사용에 한정됩니다. 아래 여러 환경은 게스트 데이터의 상실을 초래할 수 있습니다.
-
iPhone은 시스템 업그레이드 또는 다운그레이드 후에 재활성화해 새로운 iPhone으로 설정합니다.
-
iPhone 데이터 복원 및 삭제
-
게임 삭제 및 재설치
사용자가 게스트 모드 로그인을 실시할 때 친구 알림을 실행할 수 있으며, 구체적인 알림 기능에 대해서는 다음을 참고하십시오.”
게스트 로그인 절차
Guest 모드에서 로그인은 등록 및 로그인의 두 가지 절차가 있습니다. 그러나, 두 환경의 차이는 MSDK에 의해 제거되며, 게임에서는 두 절차 사이의 차이에 관심을 기울이지 않아도 됩니다. 여기서는 절차에 대한 설명만 하겠습니다.
(./res/login_guest_flow.png)
계정 모드 및 Guest 모드 절차 비교
(./res/login_guest_compare.png)
2 콜백
승인된 로그인 등록 콜백을 참조
3 로그인 인터페이스 호출
승인된 로그인 로그인 인터페이스 호출을 참조
4 게스트 id 새로고침 인터페이스 호출
1) 기능 설명
게스트 모드에서 id를 새로고침합니다.
2) 인터페이스 선언
void WGResetGuestID();
3) 파라미터 설명
없음
4) 반환값
없음
5) 예시 코드
WGPlatform.Instance.WGResetGuestID ();
6) 특수 설명
현재 네트워크 버전에서는, 사용자 데이터 상실을 방지하기 위해 게스트 재설정 인터페이스를 호출하지 마십시오.
7) 용어 해석
없음
위챗 QR코드 스캔 로그인
1) 기능 설명
로그인 QR코드 표시 인터페이스를 풀업하고, 플레이어는 다른 하나의 이미 로그인한 상응하는 소셜 계정의 휴대전화기로 QR코드를 스캔해서 지시에 따라 승인한 후에, 게임에서 로그인 토큰 정보를 획득할 수 있습니다. 일반적으로 TV 또는 태블릿 환경에서 사용하거나 휴대전화기에 플랫폼 클라이언트가 설치되어 있지 않는 상황에서 사용합니다.(현재 위챗만 지원)
2) 인터페이스 선언
void WGQrCodeLogin(ePlatform platform);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
platform | ePlatform 열거 | 게임이 승인 로그인을 요구하는 플랫폼 유형 |
4) 반환값
없으며, 등록 정보는 LoginEvent 콜백을 통해 게임에 반환합니다.
5) 예시 코드
WGPlatform.Instance.WGQrCodeLogin (ePlatform.ePlatform_Weixin);
6) 특수 설명
코드 스캔 로그인 권한 정보: 프리미엄 게임이 아닌 경우, 균일하게 게임 메일로 위챗에 신청하며, 프리미엄 게임은 계약을 통해 균일하게 액세스 처리합니다.
풀업한 QR코드 이미지는 5분 동안 유효하며, 시간이 초과되면 코드 스캔으로는 로그인할 수 없습니다.
7) 용어 해석
없음
제 3자 플랫폼 로그인
1) 기능 설명
플레이어가 모바일QQ 또는 위챗 내에서 정보 공유를 클릭해 직접 게임을 풀업해 진입할 때, 플랫폼은 로그인 관련 토큰 정보를 투명 전송함으로써 게임 로그인 진입을 직접 수행할 수 있습니다. 이러한 환경 하에서, 게임이 풀업된 후에 사용자가 다시 승인을 거쳐 게임에 진입할 필요는 없습니다. MSDK 내부에 관련 코드와 콜백 설정을 마쳤습니다. Android, iOS 두 클라이언트의 wiki, 설정 관련 배치를 참조하십시오.
다른 계정 처리
1 종합 설명
사용자가 플랫폼에서 게임을 풀업해 진입하면, 계정 불일치로 인하여(플랫폼 불일치 또는 플랫폼은 일치하나 계정이 불일치), 게임 팝업창에서 다른 계정을 알리는 메시지가 표시됩니다. 다른 계정 상황에 대한 상세한 설명은, 다른 계정의 설명 문서
2 콜백
MSDK에서 제공하는 게임의 풀업된 콜백을 접수하기 위해서는, WakeupEvent 콜백을 등록할 필요가 있습니다.
1) 기능 설명
플랫폼에서 게임을 풀업해 게임이 보유하고 있는 정보에 진입한 후, WakeupEvent를 통해 게임에 전달합니다.
2) 인터페이스 선언
public delegate void WakeupDelegate(WakeupRet wakeupRet);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
wakeupRet | WakeupRet 카테고리 | 게임 풀업 정보 |
4) 반환값
없음
5) 예시 코드
MsdkEvent.Instance.WakeupEvent += (WakeupRet wakeupRet) =>
{
// TODO GAME 여기에서 다른 계정의 논리를 추가 처리
if (eFlag.eFlag_Succ == wakeupRet.flag || eFlag.eFlag_AccountRefresh == wakeupRet.flag) {
// 로컬 계정 로그인 성공 후 직접 게임 진입 가능
// 게임 TODO: 게임 논리 진입
if((int) ePlatform.ePlatform_Weixin == wakeupRet.platform) {
loginState = "위챗 로그인 성공";
} else if ((int)eWakeupPlatform.eWakeupPlatform_QQ == ret.platform){
loginState = "QQ 로그인 성공";
} else if ((int)eWakeupPlatform.eWakeupPlatform_QQHall == ret.platform){
loginState = "로비 로그인 성공";
}
} else if (eFlag.eFlag_UrlLogin == wakeupRet.flag) {
// 로컬에 계정 정보가 없으며 자동 풀업 계정 로그인의 로그인 결과가 OnLoginNotify() 내에서 콜백
} else if (eFlag.eFlag_NeedSelectAccount == wakeupRet.flag) {
// 게임 TODO: 다른 계정 시에, 팝업 메시지를 띄워 사용자에게 게임에서 필요한 로그인 계정을 선택하도록 하고, 사용자의 선택에 따라 WGSwitchUser 인터페이스를 호출함
Debug.Log("diff account");
isShowDiffAcount = true;
message = "다른 계정입니다!" ;
} (eFlag.eFaigNeedLogin == wakeupRet.flag) {
// 게임 TODO: 유효한 토큰이 없을 경우, 게임에서 로그아웃되며 사용자에게 다시 로그인하게 함
loginState = "로그인 실패";
message = "재로그인하십시오.";
} else {
loginState = "등록되어 있지 않음";
message = "OnWakeupNotify flag : " + wakeupRet.flag + "\ndesc : " + wakeupRet.desc;
WGPlatform.Instance.WGLogout();
}
};
6) 특수 설명
eFlag.eFlag_NeedSelectAccount를 수신하면 바로 다른 계정 상황이 촉발되며, 이때 게임에서 팝업창을 띄어 고객으로 하여금 로그인해야 할 계정을 선택하게 하며, 사용자의 선택에 따라 WGSwitchUser 인터페이스를 호출한 후 LoginEvent 콜백이 계정 변환 결과를 획득하기를 기다립니다.
7) 용어 해석
3 계정 변환
1) 기능 설명
다른 계정으로 판단한 wakeupRet.flag가 eFlag_NeedSelectAccount일 경우, 게임은 팝업창을 띄어 사용자에게 알리고 로컬 계정 선택 또는 게임 계정 로그인 기능을 풀업해야 하며, 게임은 사용자의 선택 결과에 따라 인터페이스 WGSwitchUser를 호출해 사용자 로그인 작업을 완료해야 합니다.
2) 인터페이스 선언
bool WGSwitchUser(bool flag);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
flag | bool | true: 외부 계정으로 변환됨, false: 본래의 계정 계속 사용 |
4) 반환값
true: 이 계정에 토큰이 있음을 나타냅니다. MSDK에서 이 토큰의 유효성을 검증하고 LoginEvent 내에서 검증 결과를 회신합니다.
false: 이 계정에 토큰이 없거나 토큰이 규정에 어긋남을 나타냅니다. 직접 로그인할 수 있으며, 사용자로 하여금 다시 승인 로그인하게 합니다.
5) 예시 코드
// 다른 계정 팝업 처리 예시
void ShowDiffAcount(int windowID)
{
// 로컬 계정 로그인 선택
if (Button("로컬 계정"))
{
if(!WGPlatform.Instance.WGSwitchUser(false)){
WGPlatform.Instance.WGLogout();
loginState = "로그인되어 있지 않음";
loginStateMaybeChange = true;
}
}
// 계정 로그인 풀업 선택
if (Button("계정 풀업"))
{
if(!WGPlatform.Instance.WGSwitchUser(true)){
WGPlatform.Instance.WGLogout();
loginState = "로그인되어 있지 않음";
loginStateMaybeChange = true;
}
}
}
6) 특수 설명
위챗 플랫폼 게임 센터에서 게임을 풀업할 때는 사용자 로그인 상태 정보를 가지고 있지 않으므로, 위챗 플랫폼 하에서 switchuser 호출은 false를 회신할 수 있으며, 그러한 경우, 승인된 로그인을 다시 실시해야 합니다.
7) 용어 해석
없음
토큰 획득
1 개요 설명
로그인 콜백 중에 LoginRet 내 TokenRet을 해석해 로그인 콜백 토큰을 획득할 수 있으며, 그 외에도, 아래 인터페이스와 같이 호출하여 현재의 로그인 토큰을 획득할 수 있습니다. LoginRet 토큰 정보 안에는 플레이어의 openid,pf,pfkey,LoginRet 내 TokenRet이 포함하고 있는 pay_token(QQ 로그인 시 보유), access_token(위챗 로그인 시 보유) 등의 정보가 담겨 있습니다. 귀하께서 결제하실 때 해당 정보를 이용할 수 있습니다.
2 콜백
없음
3. 호출 인터페이스
1) 기능 설명
로그인 콜백 토큰 획득
2) 인터페이스 선언
LoginRet WGGetLoginRecord();
3) 파라미터 설명
없음
4) 반환값
LoginRet 현재 로그인 토큰
5) 예시 코드
LoginRet loginRet = WGPlatform.Instance.WGGetLoginRecord();
if (loginRet == null || loginRet.open_id == "") {
// 사용자가 로그인되어 있지 않음;
// 게임 TODO: 토큰 무효. 로그인 페이지로 돌아감
} else {
// 사용자 로그인되었음.
// 게임 TODO: 토큰 읽어들이기.
}
6) 특수 설명
-
귀하께서 이 인터페이스를 통해 획득한 토큰은 이후에 LoginRet.flag를 판단해야 하며, 0(eFlag_Succ)일 경우에는 토큰이 정상적으로 유효하고 직접 사용할 수 있습니다. 5001(eFlag_Checking_Token)일 경우, 이는 MSDK가 현재 토큰을 검증 중임을 나타내며, 이때 획득한 토큰은 무효입니다. 이후에 재시도해야 합니다.
-
해당 인터페이스는 로컬 데이터베이스 검색을 포함할 수 있으며, 높은 빈도의 호출은 성능에 영향을 줄 수 있으므로 높은 빈도의 호출은 바람직하지 않습니다. unity 게임의 경우, update 함수를 빈번히 호출하지 마십시오.
7) 용어 해석
실명제
문화부의 <네트워크 게임 관리 임시 시행법>의 관련 요구 사항에 따르면, 네트워크 게임 사용자는 유효한 신분 증명 자료를 사용해 실명 등록을 해야 게임에 로그인할 수 있습니다. 게임 개발의 부담을 경감하기 위해 당사는 게임을 위한 실명 인증 인터페이스 및 완전한 인터페이스 세트를 구축해, 해당 모듈을 통해 귀하께서는 수 분 만에 실명 인증 기능을 완성할 수 있습니다.
실명제에 관한 상세 정보 설명은 실명제 설명 문서
로그아웃
1 종합 설명
WGLogout 인터페이스를 호출해 로그아웃해 로컬 토큰을 삭제할 수 있습니다.
2 콜백
없음
3. 호출 인터페이스
1) 기능 설명
로그인 콜백 토큰 획득
2) 인터페이스 선언
bool WGLogout();
3) 파라미터 설명
없음
4) 반환값
true 회신인 경우, 반환값을 처리하지 않아도 됩니다.
5) 예시 코드
WGPlatform.Instance.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)
자주 묻는 질문
게임의 프론트/백그라운드 변환 시에 토큰 검사를 이용합니까?
게임 프론트/백그라운드 변환 시에는 토큰 유효성을 검증할 필요가 없습니다. 게임 내 백그라운드 시간이 초과되어 프론트로 변환될 때, MSDK에서 자동으로 토큰 유효성을 검증합니다.