뒤끝 커스텀 로그인

현재 프로젝트는 기본적으로 커스텀 로그인과 구글 로그인을 지원한다. 간단히 닉네임만 설정하여 회원가입할 수 있다. 회원가입을 할 때 커스텀 로그인으로 구현하였지만, 게스트 로그인으로 나타내어 구글 연동을 할 경우에만 다른 기기나 다시 로그인을 진행할 수 있고, 커스텀 계정으로 로그인할 경우에는 다시 로그인하기 어려운 구조이다.
현재는 위와 같은 방식이지만, 커스텀 계정의 코드를 부여하여 자신의 코드만 입력하면 로그인할 수 있게 할 계획이다.


1)커스텀 회원가입

  • 동기방식
    BackendReturnObject bro = Backend.BMember.CustomSignUp ( "id" , "password" );
    if(bro.IsSuccess())
    {
    Debug.Log("회원가입에 성공했습니다");
    }
    
  • 비동기방식
    Backend.BMember.CustomSignUp ( "id", "password", callback => {
    if(callback.IsSuccess())
    {
      Debug.Log("회원가입에 성공했습니다");
    }
    });
    
  • SendQueue
    SendQueue.Enqueue(Backend.BMember.CustomSignUp, "id", "password", callback => {
    if(callback.IsSuccess())
    {
      Debug.Log("회원가입에 성공했습니다");
    }
    });
    
  • ReturnCase
    • 회원가입에 성공한 경우
      • statusCode : 201
      • message : Success
    • 중복된 customId 가 존재하는 경우
      • statusCode : 409
      • errorCode : DuplicatedParameterException
      • message : Duplicated customId, 중복된 customId 입니다
    • 프로젝트 상태가 ‘점검’일 경우
      • statusCode : 401
      • errorCode : BadUnauthorizedException
      • message : bad serverStatus: maintenance, 잘못된 serverStatus: maintenance 입니다
    • 출시 설정이 테스트인데 AU가 10을 초과한 경우
      • statusCode : 403
      • errorCode : ForbiddenException
      • message : Forbidden Active User(로그인에 성공한 상태의 유저) exceed 10., 금지된 Active User(로그인에 성공한 상태의 유저) exceed 10.


위의 정보를 토대로 회원가입을 구현하였다.


    public void FirstSignUp()
    //커스텀 회원가입
    {
        string id = RandomMackingRandomID();
        //위의 함수는 30자리의 랜덤한 아이디를 부여한다.
        var bro = Backend.BMember.CustomSignUp(id, "---");
        //비밀번호를 생성(위의 string과는 다름)
        Debug.Log(bro.ToString());
        if (bro.IsSuccess())
        //회원가입 성공하였을 경우
        {
            Debug.Log("회원가입 성공"); 
            UIManager.Inst.DoDisappear(chooseLogin); // 현재 창 닫기
            UIManager.Inst.DoMove(loginPanel); //닉네임 생성 창 띄우기
            LoadChart2(); //차트 가져오기(뒤에서 포스팅)
        }
        else
        //실패하였을 경우 다시 시도
        {
            FirstSignUp();
        }
    }
    public string RandomMackingRandomID()
    {
        var characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        string ID = null;
        for (int i = 0; i < 30; i++)
        {
            ID = ID + characters[Random.Range(0, characters.Length)];
        }
        return ID;
    }


SDK가 너무 잘되어 있어 크게 회원가입을 만드는데 어려움이 없다.

2)커스텀 로그인


로그인과 동시에 게임에 필요한 정보를 생성한다.

    public void SetNickName()
    {
        BackendReturnObject bro = Backend.BMember.CheckNicknameDuplication(nickName.text);
        //인풋필드에 입력한 닉네임의 중복 검사
        Debug.Log(bro.GetStatusCode());
        if (bro.IsSuccess() && NicknameManager.Filter(nickName.text))
        //닉네임 필터를 사용하여
        //모음 또는 자음만 있거나, 욕설이 포함되어 있는 닉네임은 설정하지 못하게 막았다.
        {
            Debug.Log(nickName.text);
            Backend.BMember.CreateNickname(nickName.text);
            //닉네임 생성
            Debug.Log("닉네임 설정 완료");
            //이하 뒤에서 설명
            Param param = new Param();
            param.Add("stage", 1);
            param.Add("wordcnt",0);
            List<string> clearwords = new List<string>();
            param.Add("clearwords0", clearwords);
            var bro1 = Backend.GameData.Insert("Info", param);
            Debug.Log(bro1.GetInDate());
            Backend.GameData.UpdateV2("Info", bro1.GetInDate(), Backend.UserInDate, param);
            Backend.URank.User.UpdateUserScore("0abc3e30-5be5-11ec-9ddb-b3b31a0d7eae", "Info", bro1.GetInDate(), param);
            UIManager.Inst.DoDisappear(UIManager.Inst.loginPanel);
            UIManager.Inst.DoMove(UIManager.Inst.tutorial);
            PlayerPrefs.DeleteKey("save");
        }
        else if(bro.GetStatusCode()=="409")
        //중복된 닉네임이 포함된다면
        {
            Debug.Log("중복된 닉네임");
            CanNotSetNickName("중복된 닉네임입니다.");
        }
        else if(bro.GetStatusCode()=="404")
        //빈칸이 포함된다면
        {
            Debug.Log("빈칸");
            CanNotSetNickName("빈칸은 안됩니다!");
        }
        else
        //욕설 또는 설정할 수 없는 단어가 포함될 경우
        {
            CanNotSetNickName("사용할 수 없는 닉네임입니다.");
        }
    }

3)커스텀 토큰 로그인


토큰 로그인이란 한번 로그인을 하게 되면 기기 로컬에 토큰을 생성하여, 토큰을 통해 자동적으로 로그인할 수 있게 해주는 기능이다.



    public void TokenLogin()
    {
        BackendReturnObject bro = Backend.BMember.LoginWithTheBackendToken();
        //기존 로그인과는 큰 차이없다.
        if (bro.IsSuccess() && UIManager.Inst.SetMainNicname())
        {
            Debug.Log("자동 로그인에 성공했습니다");
            UIManager.Inst.DoMove(UIManager.Inst.mainUI);
            UIManager.Inst.DoMove(UIManager.Inst.nickNameBtn);
            LoadChart2();
        }
        else
        {
            UIManager.Inst.DoMove(chooseLogin);
        }
    }