- 뒤끝 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에러입니다. 어떻게 해결해야될지…