private void SwitchUser(Dictionary<string, object> userinfo, bool needLogout) { //登录用户信息 SDKOnlineUser newUser = mCurrentUser.Clone(); newUser.UpdateData(userinfo); //登录验证 StartCoroutine(LoginCheck(newUser, () => { OnSwitchUserSuccess(needLogout); })); }
/// <summary> /// SDK登录成功后的处理 /// </summary> /// <param name="userinfo"></param> private void OnLoginSuccess(Dictionary<string, object> userinfo) { Debug.Log("AndroidSingleSDKHelper::OnLoginSuccess() Called!!"); if (userinfo == null) { OnLoginFailed(); return; } //登录用户信息 SDKOnlineUser newUser = mCurrentUser.Clone(); newUser.UpdateData(userinfo); //登录验证 StartCoroutine(LoginCheck(newUser, () => { OnLoginCheckSuccess(); })); }
/// <summary> /// 登录验证 /// </summary> private IEnumerator LoginCheck(SDKOnlineUser userInfo, LoginCheckFinishDelegate finishCheckDelegate) { Debug.Log("AndroidSingleSDKHelper::LoginCheck() Called!!"); mCurSDKPhase = SDKPhase.LoginCheck; //如果SDK角色信息为空,直接走登录验证失败的流程 if (userInfo == null) { Debug.LogError("AndroidSingleSDKHelper::LoginCheck-> userInfo == null!!"); // UICommonManager.GetInstance().bubbleLoopTipsControl.ShowTips("登录验证失败"); OnLoginCheckFailed(); yield break; } //如果SDK不需要登录验证,直接走登录验证成功的流程 if (!userInfo.getNeedLoginCheck()) { Debug.Log("AndroidSingleSDKHelper::LoginCheck-> user.getNeedLoginCheck == false"); //更新当前用户信息 mCurrentUser = userInfo; //调用代理 finishCheckDelegate(); yield break; } //生成登录验证Url地址 string url = CreateLoginCheckURL(); Debug.Log("AndroidSingleSDKHelper::LoginCheck-> url = " + url); //WWW用Post方式请求登录验证结果 WWW www = new WWW(url); yield return www; string result = ""; if (www.isDone && string.IsNullOrEmpty(www.error)) { result = www.text; } Debug.Log("AndroidSingleSDKHelper::LoginCheck-> result = " + result); //解析登录验证返回的信息 var respondDict = Json.Deserialize(result) as Dictionary<string, object>; if (respondDict == null) { //如果登录验证返回的信息为空,直接走登录验证失败的流程 Debug.LogError("AndroidSingleSDKHelper::LoginCheck-> respondDict == null!!!"); // UICommonManager.GetInstance().bubbleLoopTipsControl.ShowTips("登录验证失败"); OnLoginCheckFailed(); //finishCheckDelegate(); yield break; } string type = (string)respondDict["code"]; if (type == null || !(type == "1")) { //如果登录验证返回的登录验证的标志不是SUCCESS,直接走登录验证失败的流程 Debug.LogError("AndroidSingleSDKHelper::LoginCheck-> respondDict[result] != SUCCESS!!!"); // UICommonManager.GetInstance().bubbleLoopTipsControl.ShowTips("登录验证失败"); OnLoginCheckFailed(); //finishCheckDelegate(); yield break; } //如果登录验证返回用户信息是空,直接走登录验证失败的流程 if (respondDict["info"] == null) { Debug.LogError("AndroidSingleSDKHelper::LoginCheck-> respondDict[userinfo] == null!!!"); // UICommonManager.GetInstance().bubbleLoopTipsControl.ShowTips("登录验证失败"); OnLoginCheckFailed(); yield break; } //登录验证成功处理 var userinfoDic = respondDict["info"] as Dictionary<string, object>; //更新当前用户信息 userInfo.UpdateData(userinfoDic); mCurrentUser = userInfo; //调用代理 finishCheckDelegate(); }