04/25/2025 12:50:47
Editor 환경에서의 시뮬레이션 로그인
업무는 개발 단계에서 Editor 환경에 로그인하여 연동 테스트를 진행해야 합니다. MSDK 는 현재 Editor 환경에서 연동 테스트를 진행할 수 있게끔 시뮬레이션 로그인 방법을 제공하고 있습니다.
현재 MSDK 는 Unity, UE4 의 시뮬레이션 로그인을 제공하고 있으며, 구현 원리는 모두 같습니다.
시뮬레이션 로그인은 token 대신, 만능 token 이 사용되며, 본 방법은 테스트 환경에서만 사용할 수 있습니다.
신규 접속 고객의 경우, 본 기능을 사용하시려면 기업위챗을 통해 온라인MSDK 로 연락주시기 바랍니다.
[info] 정식 환경에서의 시뮬레이션 로그인
정식 환경에서의 시뮬레이션 로그인은 실제 openid 와 token 을 사용하여야만 검증이 가능합니다.
1 Unity 시뮬레이션 로그인
시뮬레이션 PC 로그인 절차(Wechat 기준):
- PC 에서 Wechat 채널 로그인을 클릭하면, MSDK 는 Assets/GCloudSDK/Scripts/MSDKCore/MSDK/UnityEditor/Data/ 디렉토리에 대응채널 시뮬레이션 로그인 상태 정보를 담은 .txt 파일을 만듭니다. 예를 들어 Wechat의 경우 WeChatLoginData.txt 이며, editor 에 나타나지 않은 경우, Refresh 를 클릭하면 됩니다.
- 게임 패키지를 모바일 기기에서 실행하고, 로그에서 로그인 상태 정보를 획득하여 WeChatLoginData.txt 파일로 복사합니다. 위의 두 단계를 완료하면 PC 에서 로그인이 가능하게 됩니다.
주의사항:
- Assets/GCloudSDK/ 플러그인 디렉토리가 변경됐다면, UnityEditorData.cs 에서 dataFilePath 의 경로를 수정하십시오
- xxx/MSDK/UnityEditor/Data/ 디렉토리의 LoginData.txt 에 기본적으로 로그인 상태 정보가 저장됩니다
2 UE4 시뮬레이션 로그인
GCloud V2.0.4 버전부터 지원함
게임이 보다 더 편리하게 Mac 과 Windows 플랫폼의 Editor 에서 로그인 테스트할 수 있도록 시뮬레이션 로그인 기능을 구현하였습니다
- 우선 MSDKCore 플러그인의 디렉토리에 Content 폴더를 새로 만들고, Content 폴더에 채널+서브채널+LoginData.txt 을 새로 만듭니다. 서브 채널이 없는 경우, 비어두시면 되며, 아래 그림을 참조하십시오
- 프로토타입에서 로그인 로그를 획득합니다. 획득한 로그를 LoginData.txt 파일에 입력하십시오. 획득 방법은 아래에 자세히 설명해두었으니 참고하시길 바라겠습니다, 반드시 JSON 포맷이어야 합니다
위의 두 단계를 완료하면 Editor 의 로그인 콜백을 받아 시뮬레이션 로그인을 할 수 있습니다
3 로그인 상태 획득 방법
3.1 Android 로그인 로그의 획득
Android 모바일 기기에 게임 App 을 설치한 후, Logcat 에서 Tag: MSDK 하여 로그 필터링을 합니다. 로그인 후 결과에서 OnLoginResp 을 검색하여, 로그인 결과를 로그에 복사하시면 됩니다.
3.2 iOS 로그인 로그의 획득
iPhone / iPad 에 게임 App 을 설치한 후, MAC 의 제어판을 열고 테스트 기계로 선택합니다. 로그인 후, 결과에서 OnLoginResp 를 검색하여, 로그인 결과를 로그에 복사하시면 됩니다.
[info] 로그인상태 예시 코드를 그대로 복사하여 대응 채널의 LoginData.txt 파일에서 사용하십시오. openid 를 변경하시면 됩니다. pc 에서 테스트 구매가 필요하시다면, 프로토타입에서 실제 openid 와 pfKey 등 관련 필드를 가져와 사용해야 합니다.
4 로그인상태 예시
1、WeChat 의 로그인 상태 예시, WeChatLoginData.txt 내용
{
"extraJson": "",
"methodNameID": 112,
"retCode": 0,
"retMsg": "Success",
"thirdCode": 0,
"thirdMsg": "success",
"birthdate": "",
"channel": "WeChat",
"channelid": 1,
"channel_info": "{\"code\":\"071H5ihk0HTfoq1W6Pek0MYuhk0H5ihH\",\"access_token\":\"16_l4kRVRLBvAUfUyWXz6evSZwwXvNcrTj-XdIVC4ryc5koTQeymyvsELbyZ8zH0SU-6EheFuY78jNF7zaymzF_uObPf9d92U3JK9fddJXUnRI\",\"expired\":7200,\"refresh_token\":\"16_caPx3PRfwkP8NOGL89Q4H4h_k-eEBNSLKIekJsC82tW3iCMUZNfkVKNcVaZyLZKzQEU-hCACRJpBua422UEAB9_UjwY2SQqu_9663IdR25E\",\"scope\":\"snsapi_userinfo,snsapi_friend,snsapi_message\",\"funcs\":\"\",\"other_funcs\":\"\",\"extend\":\"\"}",
"uid": "oHlap1QDpmRiwliuWdvMH3mAWnQM",
"first": 0,
"gender": 0,
"health_game_ext": "{\"serial_number\":\"oHlap1QDpmRiwliuWdvMH3mAWnQM-1543845913-ahnZ\",\"prajna_ext\":\"{ \"type\": 0, \"webview_frame\": { \"buttons\": [ ], \"show_title\": 0, \"show_titlebar\": 0, \"url\": \"\" } }\",\"username\":\"\"}",
"openid": "3042973086530817307",
"pf": "wechat_wx-App Store-android-App Store-wx-xxxxx-oHlap1QDpmRiwliuWdvMH3mAWnQM",
"pfKey": "74ffe118eb96e85e87957566796fcc40",
"picture_url": "",
"need_name_auth": false,
"reg_channel_dis": "",
"seqID": "11-afd9d432-0527-4429-a905-5e9742399f30-1543845916-14",
"token": "MSDKLOGINMOCKER_51433213c2e72a6304fb805b10a2201d",
"token_expire_time": 1543853113,
"user_name": "rdgztest_INWRBE"
}
2、 QQ 의 로그인상태 예시, QQLoginData.txt 내용
{
"ret": 0,
"msg": "success",
"openid": "3042973086530817307",
"token_expire_time": 1541658617,
"first": 0,
"reg_channel_dis": "",
"user_name": "kysduolc",
"picture_url": "http://qzapp.qlogo.cn/qzapp/ 1106977030/FA1981312F1A9ABA31CC5EC5E62690B9/100",
"need_name_auth": false,
"channel_info": "{\"pay_token\":\"493C9D67E5F3C653253F9CA8D8043498\",\"access_token\":\"0 3FE61DCBC55C86C18B9455D5D91AA89\",\"openid\":\"FA1981312F1A9ABA31CC5EC5E62690B9\",\"expired\":0,\"refresh_ token\":\"\",\"scope\":\"\",\"funcs\":\"\",\"other_funcs\":\"\",\"extend\":\"\"}",
"extra": "",
"retCode": 0,
"retMsg": "Success",
"token": "A23EsnNaIT@7ISkex5JOg3Tl@LMFlDS3SvzqsEp14wiuK087owIv4vgu BV6MVGU5",
"gender": 1,
"birthdate": "",
"pf": "qq_qq-00000000-android-00000000-qq-110 6977030-FA1981312F1A9ABA31CC5EC5E62690B9",
"pfKey": "",
"channel": "QQ",
"channelID": 2,
"methodNameID": 112
}
3、 Guest 의 로그인상태 예시, GuestLoginData.txt 내용
{
"ret": 0,
"msg": "success",
"openid": "6020163207300203881",
"token_expire_time": 1555812357,
"first": 1,
"reg_channel_dis": "",
"user_name": "",
"picture_url": "",
"need_name_auth": false,
"channel_info": "{\"uuid\":\"b640b767-9d92-45f0-8149-8fd33d769894\",\"access_token\":\"6dd0a5f22c5bddb5e74d481db6dbbb8ec6fc094a\",\"expired\":0,\"refresh_token\":\"\"}",
"bind_list": "",
"confirm_code": "",
"confirm_code_expire_time": -2282828787735330816,
"retCode": 0,
"retMsg": "Success",
"token": "7ca255b0fd2cc21380ab4ddd1e0a410a8c66ef91",
"gender": 0,
"birthdate": "",
"pf": "guest_gs-00000000-android-00000000-gs-00-b640b767-9d92-45f0-8149-8fd33d769894",
"pfKey": "e8f82e9551896ab732dafe510288a787",
"channel": "Guest",
"channelID": 3,
"methodNameID": 112,
"extraJson": ""
}
4、 Facebook 의 로그인 상태 예시, FacebookLoginData.txt 내용
{
"ret": 0,
"msg": "success",
"openid": "2355738011190361112",
"uid": "224557048495562",
"token": "6f5bd082f9972b7bdb6c516bc1df605bf2f1d7f5",
"token_expire_time": 1555570474,
"first": 0,
"reg_channel_dis": "App Store",
"user_name": "Công Phượng",
"gender": 0,
"birthdate": "",
"picture_url": "https://platform-lookaside.fbsbx.com/platform/profilepic/?asid=224557048495562&height=50&width=50&ext=1555570473&hash=AeQQj1MotyFo6xvo",
"pf": "facebook_fb-App Store-iap-App Store-fb-371085970095922-224557048495562",
"pf_key": "89baba8a5e12ed954fdfe2b0266fb528",
"need_name_auth": false,
"channel_info": "{\"access_token\":\"EAAFRgC9tvzIBANTcaIcjBz2fK5QK2GnhKTvWNLlGoF2rq0HtZC08KivVkYNA48nx0jmla0aXUEYwnH1oINb9Azo3D6qeZCn1mm066BzDh6bZBDh8ISxx2LpuQeEqEY7ZAqxsr4ZC3dPUYGjCUj7XfgNezVQEEFFcVdBKiETdRMWzVvoORKsfIrh6fUFPlTJwB3gC69Ff88pAWEcD3S1acP6oBzMgLw6kZD\",\"seq\": \"11 - seXEMyVaFv5QBkCo2CasBbHu8W9JHOfNTCjVLaJkUAPtPo8XJ89G2R7BlAKGcoar - 1552978424 - 5\"\"}"
}
5、Logout 은 Logout.txt 에 아래와 같은 내용을 추가하여 editor 모드에서 Logout 성공 리턴값을 획득할 수 있습니다
{"ret":1,"msg":"","methodNameID":117,"retCode":0,"retMsg":"Success","extraJson":""}
All rights reserved.