본문으로 건너뛰기
버전: 5.16.0

LoginWithTheBackendToken

public BackendReturnObject LoginWithTheBackendToken();

설명

기존에 로그인했던 유저가 기기 로컬에 저장 된 뒤끝 AccessToken을 이용하여 로그인을 시도합니다.
뒤끝 SDK의 로그인 함수는 기기 내부에 기한이 만료되지 않은 access_token 혹은 refresh_token이 필요합니다.
Login에 성공하면 access_token과 refresh_token을 새 값으로 업데이트를 합니다.

토큰 로그인 구현 시 주의 사항

다른 기기 접속, 업데이트로 인한 backend.dat 파일의 변경 등 다양한 이유로 토큰이 만료되는 상황이 발생할 수 있습니다.
이 경우, 토큰 로그인이 불가해지므로 일반 로그인 과정이 필요합니다.

토큰 로그인을 사용하시는 경우 반드시 토큰 로그인에 실패하였을 때, 일반 로그인을 진행할 수 있도록 코드를 구성하여 이용해 주세요.

Example

동기

BackendReturnObject bro = Backend.BMember.LoginWithTheBackendToken();
if(bro.IsSuccess())
{
Debug.Log("자동 로그인에 성공했습니다");
}

비동기

Backend.BMember.LoginWithTheBackendToken((callback) => {
if (callback.IsSuccess()) {
Debug.Log("자동 로그인에 성공했습니다");
}
});

SendQueue

SendQueue.Enqueue(Backend.BMember.LoginWithTheBackendToken, (callback) => {
if (callback.IsSuccess()) {
Debug.Log("자동 로그인에 성공했습니다");
}
});

ReturnCase

Success cases

로그인에 성공한 경우
statusCode : 201
message : Success

Error cases

기기 로컬에 액세스 토큰이 존재하지 않는데 토큰 로그인 시도를 한 경우
statusCode : 400
errorCode : accessTokenError
message : accessToken not exist

로그인한적이 없거나, 로그아웃 후 재접속하는 등 토큰값이 존재하지 않는 상황에서 시도한 경우
statusCode : 400
errorCode : UndefinedParameterException
message : undefined refresh_token, refresh_token을(를) 확인할 수 없습니다

다른 기기로 로그인 하여 refresh_token이 만료된 경우
statusCode : 401
errorCode : BadUnauthorizedException
message : bad refreshToken, 잘못된 refreshToken 입니다

차단당한 유저인 경우
statusCode : 403
errorCode : 콘솔에 입력된 차단 사유
message : Forbidden blocked user, 금지된 blocked user
code : 403100
errorMessage : 757fe1d0-03af-11ef-bda5-fd24a5f141c1 blocked until 2024-11-29T12:41:19.465Z
errorData : {
uuid : 757fe1d0-03af-11ef-bda5-fd24a5f141c1
nickname : 닉네임
blockReason : 콘솔에 입력된 차단 사유
blockDate : 2024-11-29T12:41:19.465Z
}

차단당한 유저일 경우, 다음과 같은 에러 데이터를 확인할 수 있습니다.

  • Code : 해당 에러 케이스의 고유 ID
  • ErrorMessage : 해당 에러 세부 사항
  • ErrorData : 에러에 관련된 세부 데이터(nickname과 blockReason은 존재하지 않을 경우, 데이터를 파싱할 수 없습니다.)

에러 사용 예제

var callback = Backend.BMember.CustomLogin("a0", "a0");

Debug.Log(
if (callback.GetMessage().StartsWith("Forbidden blocked user"))
{
StringBuilder returnString = new StringBuilder();
returnString.Append("StatusCode : ").Append(callback.GetStatusCode()).AppendLine();
returnString.Append("ErrorCode : ").Append(callback.GetErrorCode()).AppendLine();
returnString.Append("Message : ").Append(callback.GetMessage()).AppendLine();

returnString.Append("Code : ").Append(callback.GetCode()).AppendLine();
returnString.Append("ErrorMessage : ").Append(callback.GetErrorMessage()).AppendLine();

returnString.Append("errorData(uuid) : ").Append(callback.GetErrorData()["uuid"].ToString()).AppendLine();

if (callback.GetErrorData().ContainsKey("nickname"))
{
returnString.Append("errorData(nickname) : ").Append(callback.GetErrorData()?["nickname"].ToString()).AppendLine();
}

if (callback.GetErrorData().ContainsKey("blockReason"))
{
returnString.Append("errorData(blockReason) : ").Append(callback.GetErrorData()?["blockReason"].ToString()).AppendLine();
}

returnString.Append("errorData(blockDate) : ").Append(callback.GetErrorData()["blockDate"].ToString()).AppendLine();

Debug.Log(returnString.ToString());
}
)

차단당한 디바이스일 경우
statusCode : 403
errorCode : ForbiddenException
message : Forbidden blocked device, 금지된 blocked device
code : 403100
errorMessage : 20240426092307fc5ac478c is blocked
errorData : {
deviceUniqueId : 20240426092307fc5ac478c
}

차단당한 디바이스일 경우, 다음과 같은 에러 데이터를 확인할 수 있습니다.

  • Code : 해당 에러 케이스의 고유 ID
  • ErrorMessage : 해당 에러 세부 사항
  • ErrorData : 에러에 관련된 세부 데이터

에러 사용 예제

var callback = Backend.BMember.CustomSignUp("a0", "a0");

Debug.Log(
if (callback.IsDeviceBlockError())
{
StringBuilder returnString = new StringBuilder();
returnString.Append("StatusCode : ").Append(callback.GetStatusCode()).AppendLine();
returnString.Append("ErrorCode : ").Append(callback.GetErrorCode()).AppendLine();
returnString.Append("Message : ").Append(callback.GetMessage()).AppendLine();
returnString.Append("Code : ").Append(callback.GetCode()).AppendLine();
returnString.Append("ErrorMessage : ").Append(callback.GetErrorMessage()).AppendLine();
returnString.Append("errorData(deviceUniqueId)").Append(callback.GetErrorData()["deviceUniqueId"].ToString()).AppendLine();
Debug.Log(returnString.ToString());
}
)

1년 뒤 refresh_token이 만료된 경우
statusCode: 410
errorCode: GoneResourceException
message: Gone expired refreshToken, 사라진 expired refreshToken 입니다.