/// <summary> /// 登入回调函数 /// </summary> public override void LoginCallBack(string arg) { var model = CheckCallBackArg <LoginCallBackModel>(arg); if (model == null) { return; } DebugLog("收到登录回调:" + " 登录状态:" + model.loginStatue + " 回调内容:" + model.desc + "回调sid(token):" + model.sid); //修改登录状态 if (model.loginStatue != (int)SDKManagerLoginState.Login_Success) { AndroidPlatSDKManager.Instance.ChangeSDKManagerLoginState(model.loginStatue); //TODO 根据回调错误码发送具体提示! } else { //改为正在登录状态 //SDK的登录成功并不表示真正的成功! - 要等服务器验证通过才算是登录成功! // AndroidPlatSDKManager.Instance.ChangeSDKManagerLoginState((int)SDKManagerLoginState.Logining); //暂时状态设置直接成功 (服务器验证放到后面) SDKLoginCompleteData onCompleteData = new SDKLoginCompleteData(); onCompleteData.result = true; onCompleteData.arg = model.sid;//登录验证数据(发给服务器验证) AndroidPlatSDKManager.Instance.ChangeSDKManagerLoginState((int)SDKManagerLoginState.Login_Success, onCompleteData); //TODO 将sid发送给服务器 获取accountid } }
/// <summary> /// 修改sdkManager Login状态 参数2:sdk登陆成功的回调数据 /// </summary> public void ChangeSDKManagerLoginState(int state, SDKLoginCompleteData onCompleteData = null) { currentSDKLoginState = (SDKManagerLoginState)state; switch (currentSDKLoginState) { case SDKManagerLoginState.Login_Delete: case SDKManagerLoginState.Login_Cancle: DebugLog("登录未成功!当前登录状态码:" + currentSDKLoginState); if (onCompleteData == null) { onCompleteData = new SDKLoginCompleteData() { result = false, }; } break; case SDKManagerLoginState.Login_Success: DebugLog("登录成功(此为sdk验证登录了(服务器暂未登陆)!!当前登录状态码:" + currentSDKLoginState); break; default: return; } if (onGameLoginComplete != null && onCompleteData != null) { DebugLog("执行登陆回调!"); onGameLoginComplete(onCompleteData); onGameLoginComplete = null; } }
/// <summary> /// 登入回调函数如果用户首次登录华为帐号进行游戏,那么调用login接口时,将不会返回只有playId的结果(即isAuth为0的情况),只会返回isAuth的结果。 /// 强烈建议应用将对鉴权签名的验证放在服务器端进行,以保证验证结果的安全性。 /// </summary> public override void LoginCallBack(string arg) { var model = CheckCallBackArg <LoginCallBackModel>(arg); if (model == null) { return; } DebugLog("登录 回调码:" + model.rst + " 回调结果:" + model.result); //TODO 回调数据暂时未用 if (model.result != null) { if (model.result.isAuth == 0) { DebugLog("sdk 快速登入成功!!"); //TODO } else if (model.result.isAuth == 1) { DebugLog("sdk 登入成功!准备将登入数据发给服务器进行验签!"); //TODO 将数据发送给服务器进行验签 SDKLoginCompleteData data = new SDKLoginCompleteData(); data.result = true; data.arg = string.Format("{0}:{1}:{2}:{3}:{4}:{5}", model.result.playerId, model.result.displayName, model.result.playerLevel, model.result.isAuth, model.result.ts, model.result.gameAuthSign); AndroidPlatSDKManager.Instance.ChangeSDKManagerLoginState((int)SDKManagerLoginState.Login_Success, data); } } }
/// <summary> /// 获取Token和SSid的回调 /// </summary> /// <param name="arg"></param> public override void GetTokenCallBack(string arg) { DebugLog("Oppo GetTokenCallBack !"); var model = CheckCallBackArg <GetTokenCallBackModel>(arg); if (model == null) { return; } if (model.resultCode == Default_ErrorCode && !string.IsNullOrEmpty(model.token)) { //TODO 数据获取成功 - 发给服务器去获取角色数据!(暂时改为后期选服验证) DebugLog("token和ssoid 回调成功!暂时不发给服务器进行验证!" + arg); SDKLoginCompleteData completeData = new SDKLoginCompleteData(); completeData.result = true; completeData.arg = string.Format("{0}:{1}", model.token, model.ssoid); AndroidPlatSDKManager.Instance.ChangeSDKManagerLoginState((int)SDKManagerLoginState.Login_Success, completeData); } else { DebugLog("oppo sdk 的 Token和SSid获取失败!" + "错误码:" + model.resultCode + "错误信息:" + model.resultMsg); //TODO 根据错误码做出相应处理 AndroidPlatSDKManager.Instance.ChangeSDKManagerLoginState((int)SDKManagerLoginState.Login_Delete); } }