게스트에서 페더레이션 계정 전환 성공 후 처리 질문

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

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

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

  • 베이스/채팅/데이터베이스/월드 SDK 버전 :
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

뒤끝 개발팀을 통한 별도의 기술지원이 작업이 필요한 요청은 help@backnd.com 으로 문의해주시기 바랍니다.

  1. 게스트 계정에서 구글 계정으로 ChangeCustomToFederation으로 전환 시도 하여 성공하는 경우
    기존 게스트 계정에 대해서 Backend.BMember.DeleteGuestInfo를 호출해줄 필요는 없나요?
    그리고 성공 이후 로그아웃 후 다시 게스트 계정 로그인 시도하면 새로운 게스트 계정으로 로그인 된다고 보면 될까요?

  2. 토큰을 이용한 자동 로그인(LoginWithTheBackendToken)으로 구글 로그인 한 경우
    TheBackend.ToolKit.GoogleLogin.Android.GoogleLogin으로 로그인 한 것이 아니기에 로그아웃시
    TheBackend.ToolKit.GoogleLogin.Android.GoogleSignOut 호출은 불가능 하다라고 인지했습니다.
    보통 게임에선 한번 로그인 후 자동 로그인으로 유도할텐데 GoogleSignOut없이 BMember.Logout만 호출하여
    로그아웃 하는 경우 다른 구글 계정으로 로그인 하고 싶어도 이전 로그인했던 구글계정으로 다시 로그인 될텐데
    이에 대한 해결방안은 없을까요?

안녕하세요 개발자님,
문의하신 내용 순차적으로 답변드립니다.

  1. 게스트 → 페더레이션 전환 후 DeleteGuestInfo 호출 여부
    DeleteGuestInfo 를 호출해 주셔야 합니다.
    ChangeCustomToFederation이 성공하더라도 기기에 저장된 게스트 정보는 자동으로 삭제되지 않으며, 이 상태에서 GuestLogin을 호출하면 새 계정이 생성되지 않고 기존 게스트 로그인 정보로 로그인이 시도되기에 아래 에러가 리턴됩니다.

    statusCode : 401
    errorCode : BadUnauthorizedException
    message : bad customId, 잘못된 customId 입니다

    ChangeCustomToFederation 성공 응답을 받은 시점에 Backend.BMember.DeleteGuestInfo()를 호출해 주시면, 이후 게스트 로그인 시 새로운 게스트 계정으로 가입·로그인됩니다.

  2. 토큰 로그인 상태에서의 구글 로그아웃
    말씀하신 대로 LoginWithTheBackendToken으로 로그인한 경우에는 구글 로그인(GoogleLogin)이 진행되지 않은 상태이므로, 이때 GoogleSignOut을 호출하면 실패하며 구글의 이전 계정 선택 정보도 초기화되지 않습니다.

    이 경우 아래 두 가지 방법 중 게임 흐름에 맞는 방식으로 적용해 주시면 됩니다.

    방법 1. 로그아웃 시점에 구글 로그아웃까지 완료하기

    1. 구글 로그아웃 (GoogleSignOut) 호출
      • 성공 시: 3번 진행
      • 실패 시: 2번 진행
    2. 구글 로그인 (GoogleLogin) 호출 후 구글 로그아웃 (GoogleSignOut) 재호출
      • 이때 GoogleLogin은 이전 계정으로 선택 창 없이 진행되며, 뒤끝 로그인(AuthorizeFederation)은 호출하지 않습니다.
    3. 뒤끝 로그아웃 (Backend.BMember.Logout) 호출 후 로그아웃 처리 완료 후 로그인 화면으로 이동 혹은 게임 종료

    이후 구글 로그인 시 계정 선택 창이 표시됩니다.

    방법 2. 다시 로그인하는 시점에 처리하기
    로그아웃 시에는 뒤끝 로그아웃만 호출하고, 유저가 구글 로그인을 선택한 시점에 아래 순서로 진행합니다.

    1. 구글 로그인 (GoogleLogin) — 이전 계정으로 선택 창 없이 진행됩니다.
    2. 구글 로그아웃 (GoogleSignOut)
    3. 구글 재로그인 (GoogleLogin) — 계정 선택 창이 표시됩니다.
    4. 선택된 계정의 토큰으로 Backend.BMember.AuthorizeFederation 호출

    각 단계는 콜백의 isSuccess 값을 확인한 뒤 다음 단계로 진행해 주시면 됩니다.

추가 질문이 있습니다.
게스트 계정으로 회원 탈퇴(Backend.BMember.WithdrawAccount)를 호출하는 경우에도
Backend.BMember.DeleteGuestInfo를 추가로 같이 호출해줘야 하나요?

동일합니다.
Backend.BMember.DeleteGuestInfo 가 호출되지 않는다면 계속 남아있는 게스트 계정 정보를 통해 로그인을 시도하게 되며,
이로인해 탈퇴가 완료되기 전(정시 전까지)에는

StatusCode : 410
ErrorCode : GoneResourceException
Message : Gone user, 사라진 user 입니다

탈퇴가 완료되고 난 후에는

StatusCode : 401
ErrorCode : BadUnauthorizedException
Message : bad customId, 잘못된 customId 입니다

에러가 발생하게 됩니다.

탈퇴 유예 시간을 둘 경우에는 Backend.BMember.DeleteGuestInfo 를 사용하게되는 경우 기존 계정으로 유예를 해제하고 재접속 할 수 없게되므로 탈퇴 정책에 따라 그에 맞는 구성이 필요합니다.

좋아요 1