게스트-페더레이션 로그인 관련 문의 + 에러 코드 구분 문의

고객님의 문의에 답변하는 직원은 고객 여러분의 가족 중 한 사람일 수 있습니다.
고객의 언어폭력(비하, 조롱, 욕설, 협박, 성희롱 등)으로부터 직원을 보호하기 위해
관련 법에 따라 수사기관에 필요한 조치를 요구할 수 있으며, 형법에 의해 처벌 대상이 될 수 있습니다.

커뮤니티 이용 정책에 위배되는 게시물을 작성할 경우, 별도 안내 없이 게시물 삭제 또는 커뮤니티 이용이 제한될 수 있습니다.

문의 응대 : 평일 오전 10시 ~ 오후 6시
문의를 남기실 경우 다음 항목을 작성해 주세요.
정보가 부족하거나 응대시간 외 문의하는 경우 확인 및 답변이 지연될 수 있습니다.

  • 뒤끝 SDK 버전 : 5.16.3
  • 프로젝트명 : Catch & Match Dev
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

안녕하세요.
뒤끝에서 제공하는 토큰 로그인, 게스트 로그인, 페데레이션(페이스북) 로그인 과정에 대한 문의가 있어 글을 남깁니다.

로그인은 처음에 무조건 게스트 로그인을 사용하며, 설정에서 유저가 원할 때 연동할 수 있고, 그 전까지는 게스트 상태로 플레이하는 형태입니다.
페데레이션 로그인이나 뒤끝의 id/pw 를 필수적으로 거쳐야 게임을 즐기는 것은 아닙니다.

로그인 프로세스를 다음과 같이 예상하고 있습니다.

  • 액세스 토큰을 확인해서 : Backend.BMember.GetAccessToken()
    • 없으면 게스트 로그인 : Backend.BMember.GuestLogin()
    • 있으면 토큰 로그인 : Backend.BMember.LoginWithTheBackendToken()
  • 토큰 로그인이 실패하면 로컬에 저장된 페이스북 토큰이 있는지 확인
    • 있으면 페데레이션 로그인
    • 없으면 게스트 로그인

이와 같은 시나리오로 구성하고 있는데 올바른 사용 방법인지 궁금합니다.

또한,
로그인 과정에서 401 에러를 만나는 케이스가 몇 가지가 있는 것 같은데,
존재하지 않는 아이디의 경우(로컬데이터가 변조된 경우)
statusCode : 401
errorCode : BadUnauthorizedException
message : bad customId, 잘못된 customId 입니다

게스트 계정을 페더레이션 계정으로 변경한 후 게스트 로그인을 시도한 경우
statusCode : 401
errorCode : BadUnauthorizedException
message : bad customId, 잘못된 customId 입니다

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

이 경우들을 확실히 구분하고 싶은데, 무엇으로 확인해야 할까요?
모두 401 에 BadUnauthorizedException 이라서 무엇으로 구분할지 모르겠습니다.

감사합니다.

안녕하세요, 개발자님.
말씀해주신 로그인 프로세스 구조는 큰 문제가 없어 보입니다.
다만, 토큰 로그인 실패 이후의 처리 흐름에 있어서는 약간의 주의가 필요해 보입니다.
예를 들어, 유저가 실제로 Facebook 계정을 연동한 상태이나 로컬에 엑세스 토큰이 없거나 만료된 상황이라면,
프로세스에 따라 새로운 게스트 계정이 생성될 수 있습니다.
이 경우, 기존에 플레이하던 계정이 아닌 새로운 게스트 계정으로 플레이 되기 때문에 혼선이 발생할 수 있습니다.
따라서, 토큰 로그인 실패 시에는 자동으로 로그인을 진행하기보다는
게스트 / 페더레이션 등 로그인 방식을 유저에게 UI를 통해 직접 선택하도록 하는 것이 보다 안전합니다.

또한, 에러 케이스의 경우 statusCode와 errorCode가 같고 message가 다르다면 메시지 부분을 파싱해서 구분하는 방법이 있겠으나, 전부 같은 상황이라면 클라이언트에서는 명확히 구분하기 어려운 상황입니다.
이 부분은 내부에 피드백하여 추후 에러 코드를 세분화하여 구분할 수 있도록 건의하겠습니다.
감사합니다.