개요
MSDK 로그인 기능은 게임 플레이어가 게임에 가장 빨리 로그인할 수 있는 방식입니다. 플레이어는 QQ 계정, 위챗 계정, 게스트 계정을 사용해 게임에 로그인할 수 있으며, Android 휴대전화기 및 태블릿 기기에서 사용할 수 있습니다.
아래 그림을 참조해 게임 로그인 페이지에 로그인 버튼을 위치시킬 수 있습니다.
기능1 QQ 로그인
MSDK 인터페이스를 호출해 모바일QQ 클라이언트를 풀업해 플레이어에게 게임을 승인하도록 안내할 수 있습니다. 일반 로그인 절차는 다음과 같습니다.
1) 게임 로그인 페이지에서 “QQ 친구와 플레이하기”를 클릭
2) 모바일QQ 로그인 페이지에서 승인 완료
그중 각 영역에 대한 설명은 다음과 같습니다.
기능 1.1: 승인된 로그인 버튼을 클릭하면 게임에 대한 로그인 승인이 완료됩니다.
기능 1.2: 사용자가 게임에 승인한 권한 목록에 대해서는, “앱 내 귀하의 QQ 친구 정보 방문” 항목이 있는지 특별히 주의를 기울여 주십시오. 해당 항목이 없을 경우, 사용자 관계 사슬 획득 시에 에러 메시지 “100030”이 표시됩니다. java 코드 내 MSDK를 처음 실행한 후의 WGPlatform.WGSetPermission(WGQZonePermissions.eOPEN_ALL)
호출을 확인해야 합니다.
기능 1.3: "돌아가기” 버튼은, 사용자가 누르면 로그인이 취소되며, 게임은 로그인 콜백을 수신하고 flag는 eFlag_QQ_UserCancel
이/가 됩니다.
기능 1.4: “계정 변환” 버튼의 경우, 사용자가 이 버튼을 누르면 모바일QQ 내에서 모바일QQ 계정을 변환할 수 있으며, 변환 후의 계정이 게임을 승인합니다.
3) 로그인에 성공하면, 게임으로 돌아가 구역 서비스를 선택하거나 직접 게임을 시작합니다.
기능 1.5: 게임 자체의 “게임 진입” 버튼은 MSDK 기능과는 관련이 없습니다.
기능 1.6: 게임 “계정 변환” 버튼은, MSDK의 로그아웃 인터페이스를 호출한 후에 게임 로그인 페이지로 돌아갑니다.
기능2 위챗 로그인
MSDK 인터페이스를 호출해 위챗 클라이언트를 풀업해 플레이어에게 게임을 승인하도록 안내할 수 있습니다. 로그인 절차는 다음과 같습니다.
1) 게임 로그인 페이지에서 “위챗 친구와 플레이하기”를 클릭
2) 위챗 로그인 페이지에서 승인 완료
기능 2.1: 승인된 로그인 버튼을 클릭하면 게임에 대한 로그인 승인이 완료됩니다.
기능 2.2: 사용자가 게임에 승인한 권한 목록에 대해서는, 그중에서 “자신과 해당 앱을 공동으로 사용하는 친구 찾기” 항목은 사용자 관계 사슬을 획득할 수 있음을 나타냅니다. 이 항목의 승인은 우수한 유형의 게임이 PR2 단계에서 협력 프로젝트 팀이 개통을 신정합니다. 구체적인 정보에 대해서는 게임의 Tencent 접촉 담당자에게 문의할 수 있습니다.
기능 2.3: "돌아가기” 버튼은, 사용자가 누르면 로그인이 취소되며, 게임은 로그인 콜백을 수신하고 flag는 eFlag_WX_UserCancel
이/가 됩니다.
기능 2.4: "재시도” 버튼은, 사용자가 이 버튼을 클릭하면 위챗 App 상에서 승인 로그인을 재시도합니다.
위챗 QR코드 스캔 로그인
위챗 모바일이 설치되어 있지 않은 휴대전화기 또는 Pad 유형, TV 유형 제품 상에서 코드 스캔 로그인 인터페이스를 호출해 보다 양호한 사용자 체험을 할 수 있습니다.
MSDK 로그인은 다음과 같은 체험을 구현할 수 있습니다.
1) 게임 로그인 계정의 빠른 생성 MSDK 로그인은 사용자가 게임 내에서 훨씬 빠르고 편리하게 게임 로그인 계정을 생성할 수 있게 해 주며, 비밀번호(이후에 분실 가능)를 설정할 필요가 없습니다. 이 간단하고 편리한 체험이 보다 높은 구매 전환률을 가져올 수 있습니다.
2) 맞춤화 게임 운영 MSDK 로그인 후 플레이어 프로필 사진, 기본 데이터 정보 획득을 승인하여 편리하게 게임을 운영하면서 보다 높은 유지율을 확보할 수 있습니다.
3) 소셜 기능 MSDK 로그인 후 게임 플레이어는 친구 간에 교류하면서 게임 길드 그룹 등을 만들 수 있으므로 게임 내 체험 공유를 촉진할 수 있습니다.
액세스 내비게이션
1 사전 요구 사항
1) 귀하께서는 Tencent 오픈 플랫폼 상에서 게임 등록을 하시고 심사에 통과하셨거나, 귀하의 Tencent 연락인이 내부 채널을 통해 귀하의 게임 등록을 도와드렸습니다.
2) 이미 MSDK 액세스 설정 모듈 설명에 따라 액세스 설정을 완료하셨습니다.
3) 귀하의 게임 로그인 권한이 개통되었음을 확인합니다. 게임 등록 후 이 권한은 이미 기본적으로 개통되어 있으며, 귀하께서 로그인 인터페이스를 호출해 "-303, no permission"을 회신하시려면, MSDK 통합 및 테스트 지원 담당자에게 연락해 주십시오.
2 Demo 예시를 참고하십시오.
모바일QQ 로그인 예시는 MSDKDemo/src/com/example/wegame/MainActivity.java 의 로그인 부분을 참조하십시오.
위챗 로그인 예시는 MSDKDemo/src/com/example/wegame/MainActivity.java 의 로그인 부분을 참조하십시오.
3 이 모듈의 다른 인터페이스 호출
앞의 Step1-Step2 단계를 완료하면 이 모듈에 완벽하게 액세스한 것이 되며, 이 모듈의 다른 인터페이스를 호출할 수 있으며 추가적인 설정은 필요없습니다. 이 모듈의 각 부분에 대한 설명은 다음과 같습니다.
1) 승인 로그인: 모바일QQ/위챗 클라이언트 또는 web 페이지(모바일QQ 미설치 시)를 풀업해 승인합니다.(web 버전 모바일QQ는 게임 유형에 따라 다양하게 상응하는 권한을 개통해야 합니다.)
2) 스캔 로그인: 사용자 기기에 위챗이 설치되어 있지 않은 상황에서, 게임은 코드 스캔 로그인을 통해 사용자가 다른 기기의 위챗에서 승인을 실시할 수 있게 해 줍니다.
3) 다른 계정 처리: 모바일QQ/위챗 플랫폼에서 다른 계정으로 로그인한 다른 계정 환경을 처리하도록 요청합니다.
4) 토큰 획득: 게임에서 토큰이 필요한(예: 결제) 경우에 이 인터페이스를 호출해 현재 사용자의 토큰 정보를 획득할 수 있습니다.
5) 로그인 나가기: 사용자가 로그아웃하거나 계정을 변환해야 할 때, 이 인터페이스를 호출해 로그인 사용자의 토큰 정보를 삭제할 수 있습니다.
승인된 로그인
1 개요 설명
모바일QQ/위챗 클라이언트 또는 web 페이지(모바일QQ 비 설치 시)를 풀업해 승인하며, 사용자 승인 이후에 WGPlatformObserver를 통해 게임에서 획득한 #Android_LoginRet)const.html#Android_LoginRet) 로그인 정보를 통지합니다.
2 콜백
1) 기능 설명
MSDK의 로그인 소환을 받기 위해서는 콜백을 등록하고 처리해야 합니다. 로그인 결과는 콜백을 통해 귀하께 통지할 수 있습니다.
2) 인터페이스 선언
public static void WGSetObserver(WGPlatformObserver observer);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
observer | WGPlatformObserver 유형 | MSDK 콜백 유형은 예시 코드를 참조하십시오. |
4) 반환값
없음
5) 예시 코드
public class MsdkCallback implements WGPlatformObserver {
public void OnLoginNotify(LoginRet ret) {
Logger.d("called");
Logger.d("ret.flag" + ret.flag);
switch (ret.flag) {
case CallbackFlag.eFlag_Succ:
mainActivity.stopWaiting();
// 로그인 성공, 각종 토큰 읽어들이기
String openId = ret.open_id;
String pf = ret.pf;
String pfKey = ret.pf_key;
MainActivity.platform = ret.platform;
String wxAccessToken = "";
long wxAccessTokenExpire = 0;
String wxRefreshToken = "";
long wxRefreshTokenExpire = 0;
for (TokenRet tr : ret.token) {
switch (tr.type) {
case TokenType.eToken_WX_Access:
wxAccessToken = tr.value;
wxAccessTokenExpire = tr.expiration;
break;
case TokenType.eToken_WX_Refresh:
wxRefreshToken = tr.value;
wxRefreshTokenExpire = tr.expiration;
break;
default:
break;
}
}
mainActivity.letUserLogin();
break;
// 게임 논리에서, 로그인 실패 상황을 분별하여 처리 실시
case CallbackFlag.eFlag_NotInWhiteList:
mainActivity.stopWaiting();
mainActivity.letUserLogout();
System.out.println("화이트리스트 내에 없엄");
break;
case CallbackFlag.eFlag_Need_Realname_Auth:
System.out.println("실명 인증이 필요함");
// TODO 게임이 MSDK_REAL_NAME_AUTH_SWITCH=0 또는 1로 설정되어 있을 경우, 여기에서 msdk에 대한 기한 만료 처리 취소
// TODO 게임이 MSDK_REAL_NAME_AUTH_SWITCH=2로 설정되어 있는 경우, 여기에서 자체 정의 된 실명 인증 인터페이스를 호출
// 여기에서 시뮬레이션된 사용자는 게임 자체 정의 인터페이스에서 정보 입력을 마치고 등록 제출 준비
if(mainActivity.isCustomUI()){
RealNameAuthInfo info = new RealNameAuthInfo();
info.name = "장샤";
info.identityType = eIDType.IDCards;
info.identityNum = "430455198411262142";
info.provinceID = 11;
WGPlatform.WGRealNameAuth(info);
};
break;
case CallbackFlag.eFlag_Login_NetworkErr:
case CallbackFlag.eFlag_WX_UserCancel:
case CallbackFlag.eFlag_WX_NotInstall:
case CallbackFlag.eFlag_WX_NotSupportApi:
case CallbackFlag.eFlag_WX_LoginFail:
case CallbackFlag.eFlag_QQ_LoginFail:
case CallbackFlag.eFlag_Local_Invalid:
Logger.d(ret.desc);
default:
// 로그인 인터페이스 표시
mainActivity.stopWaiting();
mainActivity.letUserLogout();
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) 인터페이스 선언
public static void WGLogin(EPlatform platform);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
platform | EPlatform 열거 | 게임이 승인 로그인을 요구하는 플랫폼 유형 |
4) 반환값
없으며, 로그인 정보는 WGPlatformObserver 콜백을 통해 게임에 회신합니다.
5) 예시 코드
WGPlatform.WGLogin (EPlatform.ePlatform_QQ); //QQ 로그인
WGPlatform.WGLogin (EPlatform.ePlatform_Weixin); //위챗 로그인
6) 특수 설명
없음
7) 명칭 해석
없음
4 로그인 호출(3.0.8 이상 버전에서 사용)
1) 기능 설명
중복 클릭 방지 기능 및 시간 초과 방지 기능이 있으며, 귀하는 WGLogin 인터페이스 호출을 통해 플랫폼이 승인 로그인 또는 자동 로그인을 호출하도록 지정할 수 있습니다. 호출에 성공하면 eFlag_Succ를 회신하며, 로그인 중일 때는 eFlag_Logining를 회신합니다. 회신 결과는 콜백을 통해 귀하께 통지할 수 있고 함수 선언 및 호출 예시 코드는 다음과 같습니다.
2) 인터페이스 선언
public static int WGLoginOpt(EPlatform platform, int overtime);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
platform | EPlatform 열거 | 게임이 승인 로그인을 요구하는 플랫폼 유형 |
overtime | int | 로그인 시간 초과로, 시간 초과는 승인 회신 후 계산이 시작되며 단위는 초입니다. |
4) 반환값
성공하면 eFlag_Succ를 회신하며, 현재 로그인 중일 경우 eFlag_Logining을 회신합니다. 로그인 정보는 WGPlatformObserver 콜백을 통해 게임에 회신합니다.
5) 예시 코드
int ret = WGPlatform.WGLogin (EPlatform.ePlatform_QQ,20); //QQ 로그인
int ret = WGPlatform.WGLogin (EPlatform.ePlatform_Weixin,20); //위챗 로그인
6) 특수 설명
없음
7) 명칭 해석
없음
위챗 QR코드 스캔 로그인
1) 기능 설명
로그인 QR코드 표시 인터페이스를 풀업하고, 플레이어는 다른 하나의 이미 로그인한 상응하는 소셜 계정의 휴대전화기로 QR코드를 스캔해서 지시에 따라 승인한 후에, 게임에서 로그인 토큰 정보를 획득할 수 있습니다. 일반적으로 TV 또는 태블릿 환경에서 사용하거나 휴대전화기에 플랫폼 클라이언트가 설치되어 있지 않는 상황에서 사용합니다.(현재 위챗만 지원)
2) 인터페이스 선언
public static void WGQrCodeLogin(EPlatform platform);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
platform | EPlatform 열거 | 게임이 승인 로그인을 요구하는 플랫폼 유형 |
4) 반환값
없으며, 로그인 정보는 WGPlatformObserver 콜백을 통해 게임에 회신합니다.
5) 예시 코드
WGPlatform.WGQrCodeLogin (EPlatform.ePlatform_Weixin);
6) 특수 설명
코드 스캔 로그인 권한 정보: 프리미엄 게임이 아닌 경우, 균일하게 게임 메일로 위챗에 신청하며, 프리미엄 게임은 계약을 통해 균일하게 액세스 처리합니다.
풀업한 QR코드 이미지는 5분 동안 유효하며, 시간이 초과되면 코드 스캔으로는 로그인할 수 없습니다.
7) 명칭 해석
없음
제 3자 플랫폼 로그인 풀업
1) 기능 설명
플레이어가 모바일QQ 또는 위챗 내에서 정보 공유를 클릭해 직접 게임을 풀업해 진입할 때, 플랫폼은 로그인 관련 토큰 정보를 투명 전송함으로써 게임 로그인 진입을 직접 수행할 수 있습니다. 이러한 환경 하에서, 게임이 풀업된 후에 사용자가 다시 승인을 거쳐 게임에 진입할 필요는 없습니다.
모바일QQ 게임 센터 빠른 로그인 설정
모바일QQ에서 게임 센터를 통해 클릭해 기동할 경우, 게임에 직접 빠른 로그인이 가능하지만, 게임 센터 상세 정보 페이지를 통해 진입할 때는 게임 설정에 따라 결정됩니다. 구체적인 구성 방법은 게임의 운영 계약 기획 PM
모바일QQ 게임 센터에 요청을 참조하시기 바라며, 게임 센터의 책임자가 설정을 완료할 것입니다. 설정은 다음과 같음:
- 지원 openID:
아래 그림과 같이 1개의 openID를 체크하십시오.
-
openID, accessToken, PayToken 보유 지원
-
대응하는 옵션에 체크
-
게임이 지원하는 다른 계정 버전에 대응하는 versionCode를 입력하십시오. 입력 이후 이 code 및 상기 버전은 토큰으로 게임을 풀업할 수 있으며, 이전 버전은 openID를 가지고 있는 경우에 한해 게임을 풀업하며, 게임의 정상적인 논리에 영향을 미치지 않습니다.
- 주의사항
설정 시에는 일반적으로 앞 3개 항목만 설정하면 되며, 뒷부분의 여러 항목들은 설정할 필요가 없습니다.
2) 인터페이스 선언
없음
3) 파라미터 설명
없음
4) 반환값
없으며, 로그인 정보는 WGPlatformObserver 콜백을 통해 게임에 회신합니다.
5) 예시 코드
게임은 자신의 메인 Activity의 선언 주기 중에 아래 코드와 같이 설정할 필요가 있습니다.
public void onCreate(Bundle savedInstanceState) {
...
WGPlatform.handleCallback(getIntent());
...
}
public void onNewIntent(Intent intent) {
...
WGPlatform.handleCallback(intent);
...
}
다른 계정 처리
1 종합 설명
사용자가 플랫폼에서 게임을 풀업해 진입하면, 계정 불일치로 인하여(플랫폼 불일치 또는 플랫폼은 일치하나 계정이 불일치), 게임 팝업창에서 다른 계정을 알리는 메시지가 표시됩니다. 다른 계정 상황에 대한 상세한 설명은, 다른 계정의 설명 문서
2 콜백
MSDK에서 제공하는 게임의 풀업된 콜백을 접수하기 위해서는, WGPlatformObserver 콜백을 등록할 필요가 있습니다.
1) 기능 설명
플랫폼에서 게임을 풀업해 게임이 보유하고 있는 정보에 진입한 후, WGPlatformObserver를 통해 게임에 전달합니다.
2) 인터페이스 선언
public static void WGSetObserver(WGPlatformObserver observer);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
observer | WGPlatformObserver 유형 | MSDK 콜백 유형은 예시 코드를 참조하십시오. |
4) 반환값
없음
5) 예시 코드
public class MsdkCallback implements WGPlatformObserver {
public void OnWakeupNotify(WakeupRet ret) {
Logger.d("called");
Logger.d(ret.toString() + ":flag:" + ret.flag);
Logger.d(ret.toString() + "desc:" + ret.desc);
Logger.d(ret.toString() + "platform:" + ret.platform);
MainActivity.platform = ret.platform;
// TODO GAME 게임은 이곳에서 다른 계정의 논리를 추가 처리해야 함
if (CallbackFlag.eFlag_Succ == ret.flag
|| CallbackFlag.eFlag_AccountRefresh == ret.flag) {
//eFlag_AccountRefresh는 위챗 토큰 새로고침 성공을 나타남
Logger.d("login success flag:" + ret.flag);
mainActivity.letUserLogin();
} else if (CallbackFlag.eFlag_UrlLogin == ret.flag) {
// 풀업한 계정 로그인을 사용하며, 로그인 결과는 OnLoginNotify() 내에서 콜백
} else if (ret.flag == CallbackFlag.eFlag_NeedSelectAccount) {
// 다른 계정 시에, 게임은 사용자에게 필요한 로그인 계정을 선택하도록 팝업 메시지를 띄워야 함
Logger.d("diff account");
mainActivity.showDiffLogin();
} else if (ret.flag == CallbackFlag.eFlag_NeedLogin) {
// 유효한 토큰이 없을 경우, 게임에서 로그아웃되며 사용자에게 다시 로그인하게 함
Logger.d("need login");
mainActivity.letUserLogout();
} else {
Logger.d("logout");
mainActivity.letUserLogout();
}
}
}
6) 특수 설명
eFlag.eFlag_NeedSelectAccount를 수신하면 바로 다른 계정 상황이 촉발되며, 이때 게임에서 팝업창을 띄워 사용자로 하여금 로그인해야 할 계정을 선택하게 하며, 사용자의 선택에 따라 WGSwitchUser 인터페이스를 호출한 후 WGPlatformObserver 콜백이 계정 변환 결과를 획득하기를 기다립니다.
7) 명칭 해석
3 계정 변환
1) 기능 설명
다른 계정으로 판단한 wakeupRet.flag가 eFlag_NeedSelectAccount일 경우, 게임은 팝업창을 띄어 사용자에게 알리고 로컬 계정 선택 또는 게임 계정 로그인 기능을 풀업해야 하며, 게임은 사용자의 선택 결과에 따라 인터페이스 WGSwitchUser를 호출해 사용자 로그인 작업을 완료해야 합니다.
2) 인터페이스 선언
public static boolean WGSwitchUser(boolean switchToLaunchUser);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
switchToLaunchUser | bool | true: 외부 계정으로 변환됨, false: 본래의 계정 계속 사용 |
4) 반환값
true: 이 계정에 토큰이 있음을 나타냅니다. MSDK에서 이 토큰의 유효성을 검증하고 WGPlatformObserver 내에서 검증 결과를 회신합니다.
false: 이 계정에 토큰이 없거나 토큰이 규정에 어긋남을 나타냅니다. 직접 로그인할 수 있으며, 사용자로 하여금 다시 승인 로그인하게 합니다.
5) 예시 코드
if(!WGPlatform.WGSwitchUser(true)){
letUserLogout();
}
6) 특수 설명
없음
7) 명칭 해석
없음
토큰 획득
1 종합 설명
로그인 콜백 중에 LoginRet 내 TokenRet을 해석해 로그인 콜백 토큰을 획득할 수 있으며, 그 외에도, 아래 인터페이스와 같이 호출하여 현재의 로그인 토큰을 획득할 수 있습니다. LoginRet 토큰 정보 안에는 플레이어의 openid,pf,pfkey,LoginRet 내 TokenRet이 포함하고 있는 pay_token(QQ 로그인 시 보유), access_token(위챗 로그인 시 보유) 등의 정보가 담겨 있습니다. 귀하께서 [결제)midas.html)하실 때 해당 정보를 이용할 수 있습니다.
위챗 토큰 자동 새로고침
-
MSDK2.0.0 버전부터 게임 운용 시간에 위챗 토큰을 정기적으로 인증하고 새로고침할 수 있으며, MSDK에서 자동으로 새로고침을 수행(시간 간격은 30분), OnLoginNotify을 통해 게임에 통지합니다. flag는 eFlag_WX_RefreshTokenSucc 및 eFlag_WX_RefreshTokenFail입니다.(onLoginNotify의 콜백 내에 포함되어 있음)
-
게임에서 새 토큰을 수신한 후에 게임 클라이언트에서 저장한 토큰과 서버의 토큰을 동기화 업데이트해서 이후에 새 토큰을 이용해 후속 절차를 완료할 수 있도록 해야 합니다.
- **MSDK2.7.0a 이전 버전에서는, 게임이 위챗 토큰 자동 새로고침 기능을 필요로 하지 않을 경우,
assets\msdkconfig.ini
에서,WXTOKEN_REFRESH
를false
로 설정하면 됩니다. 이때 게임에서는 위챗 토큰 시간 만료 논리를 자동 처리해야 합니다. - MSDK2.7.0a 이후 버전의 경우, 이전 버전 로그인 절차 지원을 기초로 새로운 절차를 확장하여, 토큰에 대해 정기적인 새로 고침기능을 수행합니다. assets/msdkconfig.ini 내 WXTOKEN_REFRESH를 아래 WXTOKEN_REFRESH=true와 같이 설정하거나 삭제하고 입력하지 않습니다.(곧, 기본값으로 기동)
위챗 토큰 새로고침:
- 위챗 accessToken의 유효 기간은 불과 2시간이며, refreshToken의 유효 기간은 30일입니다. refreshToken의 유효 기간이 지나지만 않았다면, refreshToken을 통해 accessToken을 새로고침할 수 있습니다. 새로고침 후에 새로운 accessToken 및 refreshToken을 획득할 수 있습니다. 게임이 MSDK에서 제공하는 토큰 자동 새로 고침 인터페이스를 사용하지 않을 경우, WGRefreshWXToken() 인터페이스를 사용해 accessToken 갱신을 실시해야 합니다.
- 게임이
WGGetLoginRecord
을/를 호출해 수령한 flag가eFlag_WX_AccessTokenExpired
일 경우, 이 인터페이스를 호출해 위챗 토큰을 새로고침합니다. 새로고침 결과는OnLoginNotify
를 통해 게임에 콜백합니다.eFlag_WX_RefreshTokenSucc
token 새로고침 성공.eFlag_WX_RefreshTokenFail
token 새로고침 실패.
2 콜백
없음
3. 호출 인터페이스
1) 기능 설명
로그인 콜백 토큰 획득
2) 인터페이스 선언
public static int WGGetLoginRecord(LoginRet ret);
3) 파라미터 설명
파라미터 명칭 | 유형 | 설명 |
---|---|---|
ret | LoginRet | 토큰 정보 LoginRet |
4) 반환값
현재 로그인 토큰의 플랫폼 id
5) 예시 코드
LoginRet lr = new LoginRet();
WGPlatform.WGGetLoginRecord(lr);
6) 특수 설명
-
이 인터페이스를 통해 획득한 토큰은 이후에 LoginRet.flag를 판단해야 하며, 0(eFlag_Succ)일 경우에는 토큰이 정상적으로 유효하고 직접 사용할 수 있습니다. 5001(eFlag_Checking_Token)일 경우, 이는 MSDK가 현재 토큰을 검증 중임을 나타내며, 이때 획득한 토큰은 무효입니다. 이후에 재시도해야 합니다. 이 인터페이스를 통해 획득한 토큰은 이후에 게임 Server에 전달해야 하며, 게임 Server를 통해 MSDK 백엔드를 호출해 토큰 인터페이스를 검증하고, 토큰의 유효성이 인증된 후에 사용자가 게임에 진입할 수 있게 합니다.
-
해당 인터페이스는 로컬 데이터베이스 검색을 포함할 수 있으며, 높은 빈도의 호출은 성능에 영향을 줄 수 있으므로 높은 빈도의 호출은 바람직하지 않습니다. unity 게임의 경우, update 함수를 빈번히 호출하지 마십시오.
7) 명칭 해석
LoginRet 정의 설명
실명제
문화부의 <네트워크 게임 관리 임시 시행법>의 관련 요구 사항에 따르면, 네트워크 게임 사용자는 유효한 신분 증명 자료를 사용해 실명 등록을 해야 게임에 로그인할 수 있습니다. 게임 개발의 부담을 경감하기 위해 당사는 게임을 위한 실명 인증 인터페이스 및 완전한 인터페이스 세트를 구축해, 해당 모듈을 통해 귀하께서는 수 분 만에 실명 인증 기능을 완성할 수 있습니다.
실명제에 관한 상세 정보 설명은 실명제 설명 문서
로그아웃
1 종합 설명
WGLogout 인터페이스를 호출해 로그아웃해 로컬 토큰을 삭제할 수 있습니다.
2 콜백
없음
3. 호출 인터페이스
1) 기능 설명
로그인 콜백 토큰 획득
2) 인터페이스 선언
public static boolean WGLogout();
3) 파라미터 설명
없음
4) 반환값
true 회신인 경우, 반환값을 처리하지 않아도 됩니다.
5) 예시 코드
WGPlatform.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에서 자동으로 토큰 유효성을 검증합니다.
Android 위챗 로그인은 검사 절차를 거치지 않습니다.
제 1단계: Log 내 유무 확인
lauchWXPlatForm wx SendReqRet: true
이 문자 표시가 있으면 요청을 위챗에 발송 성공한 것입니다.
위챗 클라이언트를 풀될 수 없을 경우, 제 2단계를 확인하시고, 위챗 클라이언트가 풀되었지만 콜백이 없을 경우에는 제 3단계를 확인하십시오.
제 2단계: 서명 및 패키지 이름 확인
https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk를 다운로드해 이 apk을 스마트폰에 설치한 후, 입력창에 게임 패키지 이름을 입력하고 버튼을 클릭해 게임 패키지 서명을 읽습니다.
상기 도구로 획득한 서명과 위챗 백그라운드 설정 서명과 일치하는지 확인합니다.(위챗 백그라운드 설정 서명 정보 확인은 RTX에서 MSDK에 문의하십시오.)
제 3단계: WXEntryActivity.java 위치 확인(이 파일은 MSDKSample 내에 있음)
이 문서는 게임+.wxapi 아래에 위치시켜야 하며, 게임 패키지 이름이 com.tencent.msdkgame일 경우, WXEntryActivity.java는 반드시 com.tencent.msdkgame.wxapi 아래에 있어야 합니다. 또한 WXEntryActivity 안의 내용이 아래와 일치하는지 확인하십시오.
/**
* !!이 문서의 코드 논리 부분 사용자는 수정해서는 안 되며, MSDK는 1.7부터 상위 클래스 이름이 WXEntryActivity에서 BaseWXEntryActivity로 변경되며, 이 파일에 에러가 발생할 경우, 우선적으로 이 행목의
*/
public class WXEntryActivity extends com.tencent.msdk.weixin.BaseWXEntryActivity { }를 확인해 주십시오.
이 단계에 문제가 없으면 제 4단계를 확인하십시오.
제 4단계: handleCallback 확인
게임의 Launch Activity의 onCreate 및 onNewIntent 내에서 WGPlatform.handleCallback 호출 유무.
제 5단계: 게임의 범용 Observer 설치 유무 확인.
게임에 정확한 WGSetObserver(C++ 계층 및 Java 계층) 호출이 있는지 확인합니다.