뒤끝 로그인 기능: user not found, user을 찾을 수 없습니다.

  • 뒤끝 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 : 발생하지 않음.
  • 에러 메시지 : user not found, user을 찾을 수 없습니다.

안녕하세요. 뒤끝 유튜브 강의 보면서 로그인 기능 구현하는 곳을 그대로 코드를 따라 쓰면서 배우는 중입니다. 그런데 로그인 버튼을 눌렀을때는 유투브 강의에서는 ($"{inputFieldID.text}님 환영합니다."); 이런식으로 잘 떠야되는데, 저는 뒤끝콘솔관리자 페이지에 등록한 유저아이디를 입력하면 자꾸 저 메세지 "user not found, user을 찾을 수 없습니다."가 떠요. 없는 유저아이디를 입력하면 "존재하지 않는 아이디입니다."라고 뜨고요. "user not found, user을 찾을 수 없습니다."가 뜨는 이유가 무엇일까요?

이건 Login.cs파일 코드입니다.

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using BackEnd;

public class Login : LoginBase //메시지 초기화 및 설정, 오류 필드설정, 필드 값 확인기능 사용을 위해 LoginBase를 부모 클래스로 설정합니다.
{
    [SerializeField]
	private	Image				imageID; //ID 필드 색상 변경
    [SerializeField]
	private	TMP_InputField		inputFieldID;		// ID �ʵ� �ؽ�Ʈ ���� ����
	[SerializeField]
	private	Image				imagePW;			// PW �ʵ� ���� ����
	[SerializeField]
	private	TMP_InputField		inputFieldPW;		// PW �ʵ� �ؽ�Ʈ ���� ����

	[SerializeField]
	private	Button				btnLogin;	 //로그인 버튼(상호작용 가능/불가능)

    /// <summary>
    /// 로그인 버튼을 눌렀을때 호출
    /// </summary>
    public void OnClickLogin()
    {
        //매개변수로 입력한 InputField UI의 색상과 Message내용 초기화
        ResetUI(imageID, imagePW);

        //필드 값이 비어있는지 체크
        if ( IsFieldDataEmpty(imageID, inputFieldID.text, "아이디")) return;
        if ( IsFieldDataEmpty(imagePW, inputFieldPW.text, "비밀번호")) return;

        //로그인 버튼을 연타하지 못하도록 상호작용 비활성화
        btnLogin.interactable = false;

        //서버에 로그인을 요청하는 동안 화면에 출력하는 내용 업데이트
        //ex) 로그인 관련 텍스트 출력, 톱니바퀴 아이콘 회전 등
        StartCoroutine(nameof(LoginProcess));

        //뒤끝 서버 로그인 시도
        ResponseToLogin(inputFieldID.text, inputFieldPW.text);
    }

    /// <summary>
    /// 로그인 시도 후 서버로부터 전달받은 message를 기반으로 로직 처리
    /// </summary>
    /// <param name="ID"></param>
    /// <param name="PW"></param>
    //

    private void ResponseToLogin(string ID, string PW)
    { 
        //서버에 로그인 요청(비동기)
        Backend.BMember.CustomLogin(ID, PW, callback =>
        {
            StopCoroutine(nameof(LoginProcess));
            
            //비동기로 처리하기 때문에 로그인을 시도하는동안 위에서 호출한 LoginProcess()코루틴 메소드가 계속 실행되고 있다.
            //로그인시도가 완료되면 callback내부내용이 실행되고, LoginProcess()코루틴 메소드를 중지합니다.

            //로그인성공
            if ( callback.IsSuccess() )
			{
				SetMessage($"{inputFieldID.text}님 환영합니다.");
                
            }
            else
            {
                //로그인에 실패했을 때는 다시 로그인을 해야하기 때문에 "로그인"버튼 상호작용 활성화
                btnLogin.interactable = true;

                string message = string.Empty;

                switch ( int.Parse(callback.GetStatusCode()) )
				{
					case 401: //존재하지 않는 아이디, 잘못된 비밀번호.
                        message = callback.GetMessage().Contains("customId") ? "존재하지 않는 아이디입니다." : "잘못된 비밀번호입니다.";
                        break;
                    case 403 : //유저 or 디바이스 차단
                        message = callback.GetMessage().Contains("user") ? "차단당한 유저입니다." : "차단당한 디바이스입니다.";
                        break;
                    case 410 : //탈퇴 진행중
                        message = "탈퇴가 진행중인 유저입니다.";
                        break;
                    default:
                        message = callback.GetMessage();
                        break;
                }

                //statusCode 401에서 "잘못된 비밀번호입니다."일때
                if(message.Contains("비밀번호"))//아이디,비밀번호중에러가 발생한 필드의 색상을 빨간색으로 변경하고, 에러내용을 출력합니다.
                {
                     GuideForIncorrectlyEnteredDate(imagePW, message);
                }
                else
                {
                    GuideForIncorrectlyEnteredDate(imageID, message);
                }
            }
        });
    }

    
    private IEnumerator LoginProcess()
    {//서버와 통신해 로그인을 시도할때 게임에 재생하는 애니메이션으로 현재 프로젝트에서는 "로그인중입니다"라는 텍스트와 함꼐 지연시간을 출력합니다.
         float time = 0;

         while (true)
         {
            time += Time.deltaTime;
            SetMessage($"로그인중입니다..{time:F1}");
            yield return null;
         }
    }
}

아래는 LoginBase.cs파일 코드입니다.

using UnityEngine;
using UnityEngine.UI;
using TMPro;

public class LoginBase : MonoBehaviour
{
    [SerializeField]//게임화면에 메세지출력할때 사용하는 textMessage변수를 선언합니다.
    private TextMeshProUGUI textMessage;

    //메세지내용, inputField 색상 초기화
    /// <summary>
    /// //메세지내용, inputField 색상 초기화
    /// </summary>
    /// <param name="images"></param>
    protected void ResetUI(params Image[] images)
    {
        textMessage.text = string.Empty;
        for(int i = 0; i < images.Length; ++i)
        {
            images[i].color = Color.white;
        }
    }

    /// <summary>
    /// 매개변수에 있는 내용을 출력
    /// </summary>
    /// <param name="msg"></param>
    protected void SetMessage(string msg)
    {
        textMessage.text = msg;
    }


    //오류에 대한 메세지 출력
    /// <summary>
    /// /입력 오류가 있는 inputField의 색상 변경ry>
    /// <param name="image"></param>
    /// <param name="msg"></param>
    protected void GuideForIncorrectlyEnteredDate(Image image, string msg)
    {
        textMessage.text = msg;
        image.color = Color.red;
    }

/// <summary>
/// 필드 값이 비어있는지 확인(image:필드, field:내용, result:출력될 내용)
/// </summary>
/// <param name="image"></param>
/// <param name="field"></param>
/// <param name="result"></param>
/// <returns></returns>
    
    protected bool IsFieldDataEmpty(Image image, string field, string result)
    {
        if(field.Trim().Equals("")) //입력 필드에 내용을 입력하지 않았을때 필드 색상을 빨간색으로 설정
        {
            GuideForIncorrectlyEnteredDate(image, $"\"{result}\" 필드를 채워주세요.");

            return true;
        }
        return false;
    }
}

저는 https://youtu.be/fKuWvzoqn30?si=wWT_odaNZZbiDT_a 이 유튜브 강의를 보고 코드를 만들었습니다. 참고 부탁드립니다.
Debug.Log(callback.GetMessage());하면 user not found, user을 찾을 수 없습니다.저 메세지가 뜨는걸 보니 404에러입니다. 어떻게 해결해야될지…

안녕하세요 개발자님,
확인시 현재 멀티캐릭터 프로젝트로 생성을 하여 멀티캐릭터 계정을 이용하고 계신것으로 확인됩니다.
헌데, 제시해주신 코드는 멀티캐릭터 로그인 함수인 LoginAccount 가 아니라, 일반 계정 로그인 함수인 CustomLogin 을 사용하고 계신것으로 확인됩니다.

위 개발자 문서 링크를 통해 멀티캐릭터 계정 및 캐릭터 로그인 함수를 확인하시고 이용해 주시면 감사하겠습니다.

내가 링크로 남긴 뒤끝 유튜브 강의 보시면, CustomLogin으로 하는데…그거는 왜 되는거죠?ㅜㅜ

해당 강의는 멀티캐릭터 기능이 추가되기 전 제작된 강의로,
멀티캐릭터 기능 이용하지 않기에 해당 함수를 이용하도록 되어있습니다.

예제 강의를 따라 진행하시고자 하는 경우, 멀티캐릭터 기능을 비활성화하여 프로젝트를 생성하신 후 이용해 주세요.

멀티캐릭터 기능 비활성화를 어떻게 해야하죠…?

프로젝트 생성시에만 설정할 수 있기에,
예제 게임을 따라하시고자 한다면 프로젝트를 새로 생성해 주셔야 합니다.
image

감사합니다. 해결되었습니다.