// 로그인 서버에 로그인 요청을 보내는 함수. private bool TryLogin(string writtenId, string writtenPw) { // id, pw 둘 중 하나라도 적혀있지 않다면 리턴. if (string.IsNullOrEmpty(writtenId) || string.IsNullOrEmpty(writtenPw)) { return(false); } try { // 로그인 서버에 요청. var request = new HttpPack.LoginReq() { UserId = writtenId, UserPw = writtenPw }; var jsonBody = JsonUtility.ToJson(request); var network = FindObjectOfType <NetworkManager>(); string loginReqUrl = _dataContainer._loginServerConfig.GetHttpString() + _dataContainer.GetHttpApiString(HttpApiEnum.Login); network.HttpPost <HttpPack.LoginRes>(loginReqUrl, jsonBody, OnHttpLoginRes); // 적혀있던 패스워드를 저장해놓는다. _reqUserId = writtenId; } catch (UnityException e) { Debug.Log(e.Message); return(false); } return(true); }
// 로그인 서버에서 로그인 응답 패킷이 도착했을 경우 처리하는 콜백함수. private bool OnHttpLoginRes(HttpPack.LoginRes response) { switch ((ErrorCode)response.Result) { // 정상적으로 처리 된 경우. case ErrorCode.None: #region Error Code : None case if (string.IsNullOrEmpty(response.Token)) { return(false); } // 유저 정보에 받은 토큰 내용 기록. _dataContainer.SetPlayerId(_reqUserId); _dataContainer.SetPlayerToken(response.Token); // 게임서버에 로그인 요청 패킷 보냄. var loginReq = new PacketInfo.LoginReq() { _id = _dataContainer._playerId, _token = _dataContainer._playerToken }; _networkManager.SendPacket <PacketInfo.LoginReq>(loginReq, PacketInfo.PacketId.ID_LoginReq); #endregion break; // 아이디나 비밀번호가 잘못된 경우. case ErrorCode.LoginUserInfoDontExist: #region Error Code : User Info Dont Exist // TODO :: 회원가입중이라고 윈도우 띄우기. Debug.LogAssertion("Invalid Id or Pw"); // 가입 요청을 한다. var signInReq = new HttpPack.LoginReq() { UserId = _id, UserPw = _pw }; var jsonBody = JsonUtility.ToJson(signInReq); var signInRequestUrl = _dataContainer._loginServerConfig.GetHttpString() + _dataContainer.GetHttpApiString(HttpApiEnum.SignIn); _networkManager.HttpPost <HttpPack.LoginRes>(signInRequestUrl, jsonBody, OnHttpLoginRes); #endregion break; default: Debug.Log("Login Server Error"); break; } return(true); }