로그인 연동

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

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

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

  • 뒤끝 SDK 버전 : 5.11.9
  • 프로젝트명 :
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

게스트 로그인에서 옵션등에서 구글 로그인으로 Federation을 할려고 합니다.

현재 앱에서 게스트로그인 상태인지 Federation 상태인지를 어떻게 알수 있을까요?

파이어 베이스를 예를 든다면 FirebaseApp.CheckAndFixDependenciesAsync() 을 호출을 통해

userInfo.ProviderId의 값으로 구글인지 애플인지, 익명인지 또는 연동 여부를 알수가 있습니다.

뒤끝에도 CheckAndFixDependenciesAsync 함수가 있거나 아니면 어떻게 해야 하는지 알려주시면 감사하겠습니다.

안녕하세요, 개발자님.
말씀하신 로그인 정보는 아래와 같이 두가지 방법을 통해 확인하실 수 있습니다.
개발자 문서를 참고하여 이용해 주시면 감사드리겠습니다.

  1. CheckUserInBackend 함수를 통해 페더레이션 가입여부 확인
    CheckUserInBackend | 뒤끝 개발자

  2. GetUserInfo 함수를 통해 유저 정보의 로그인 타입(커스텀, 페더레이션) 확인
    GetUserInfo | 뒤끝 개발자

어라 이 두개다 제가 봤던것들이네요…

CheckUserInBackend 은 Federation token이 필요한데요. 이걸 얻을려면 해당 플랫폼 로그인을 해야 얻을수 있는값아닌가요? ChangeCustomToFederation 을 통해 마이그레이션후에 로컬 저장소에 token을 저장하고 Guest인지 Federation 로 로그인을 해야 하는지 해야 할꺼 같은데 이게 맞는건가요?
GetUserInfo 도 로그인을 해야 알수 있는거라 로그인을 하기전에는 정보를 못얻어올꺼 같구요.

개발자님께서 말씀해주신 게스트 로그인에서 옵션등에서 구글 로그인으로 Federation을 할려고 합니다. 라는 상황은
게스트로그인이 이루어진 상황을 전제로 하고 있는 상황으로 보이는데요,
그렇다면 GetUserInfo 를 통해서 계정이 커스텀(게스트) 계정인지 페더레이션 계정인지 확인할 수 있습니다.

로그인을 하지 않은 상태에서는 계정 정보를 확인할 수 없습니다.

만약 의도하시는 상황이 이러한 상황이 아니라면,
보다 구체적으로 설명해주시면 확인하여 안내드릴 수 있도록 하겠습니다.

넵. 좀 더 설명을 하자면…

  1. 게스트 로그인 기본 설정:
  • 앱을 처음 시작할 때는 게스트 로그인으로 사용자를 인증합니다.
  1. 페더레이션 로그인 연동 옵션 추가:
  • 이후 구글 로그인 등의 페더레이션 로그인 옵션을 추가로 제공합니다.
  1. 로그인 상태 확인 방법:
  • Firebase에서는: FirebaseApp.CheckAndFixDependenciesAsync()를 사용하여 현재 로그인이 되어 있는지, 익명 로그인인지, 어떤 제공자를 통해 로그인했는지를 확인할 수 있습니다.
  • 다른 환경에서는: 유사한 기능을 구현할 수 있는 방법이 필요합니다. 예를 들어, 현재 로그인 상태를 확인하고, 익명 로그인인지, 페더레이션 로그인인지, 어떤 제공자를 통해 로그인했는지를 구분하는 방법이 필요합니다.
  1. 로그인 상태 확인 코드 예시(Firebase):

csharp

코드 복사

var auth = FirebaseAuth.DefaultInstance;
FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
    var dependencyStatus = task.Result;
    if (dependencyStatus == Firebase.DependencyStatus.Available) {
        var currentUser = auth.CurrentUser;
        if (currentUser != null) {
            bool isAnonymous = currentUser.IsAnonymous;
            var providerData = currentUser.ProviderData;
            // providerData에서 로그인 제공자 정보 확인 가능
        } else {
            // 로그인되지 않은 상태
        }
    } else {
        // Firebase 종속성 오류 처리
    }
});
  • 뒤끝에서는 비슷한 기능을 어떻게 구현할 수 있는지 설명 부탁드립니다.
  1. 로그인 방식 선택 기준:
  • 게스트 로그인: 초기 상태에서는 게스트 로그인을 기본으로 사용.
  • 페더레이션 로그인: 사용자가 구글 로그인 등 페더레이션 로그인을 선택할 경우 해당 방법으로 인증.
  • 로그인 후 상태 유지: 로그인 후에는 로그인 상태를 확인하여, 적절한 로그인 방법을 유지.
  1. 페더레이션 연동 후 게스트 로그인 구분 방법:
  • 페더레이션 로그인 연동 후, 게스트 로그인을 사용하지 않도록 해야 합니다.
  • 이를 위해 초기 로그인 시점에서 사용자가 페더레이션 로그인 연동을 선택했는지 여부를 기록하고, 이후 로그인 시도 시 이를 체크하여 게스트 로그인 시도를 막아야 합니다.

요약하자면 마지막 로그인 시 페더레이션 로그인 선택 여부를 기록하고, 이후 로그인 시 이를 체크하여 게스트 로그인 시도를 막음.

감사합니다

뒤끝의 경우 몇몇 함수를 제외한 모든 함수는 로그인 이후 호출이 가능하도록 되어있습니다.
이에 다소 복잡한 과정을 통해 게스트 계정의 로그인 버튼을 보여주지 않을 수 있지만,
게스트 로그인 버튼을 비활성화하는 방법은 권장하지 않습니다.

이미 페더레이션 전환을 한 상황이라 할지라도,
게임을 삭제하였거나, 로컬의 게스트 계정 정보를 삭제하는 함수를 호출하지 않는 한,
게스트 로그인을 진행할 경우 bad customId, 잘못된 customId 입니다 에러가 발생하며 게스트 로그인이 불가하기에
해당 에러가 발생하는 경우 ‘구글 계정 연동을 진행하신 계정으로 확인됩니다, 구글 로그인을 진행해주세요.’ 와 같은 안내를 띄워주시는 방향을 권장드립니다.


아래는 게스트 로그인 버튼의 비활성화 하는 방법을 포함한 로그인 과정 안내입니다. 예시로써 안내드리는 부분이기에 적절히 변경하여 이용해 주시면 감사하겠습니다.
  • 게임 실행 시

    1. IsAccessTokenAlive 함수를 통해 토큰 유효성을 확인
      a. 토큰정보가 없어 accessToken not exist 에러가 발생하는 경우 2번 과정을 건너 뛰고 진행
      b. 함수 호출에 성공하거나 그외 에러가 발생하는 경우 2번 과정으로 진행
    2. 뒤끝 토큰 로그인을 통해 자동 로그인 진행 (뒤끝에서는 한번이라도 로그인을 한 경우, 토큰이 생성/갱신되어 이를 통해 자동 로그인이 가능합니다.)
      a. 정상 로그인 되는 경우 게임 플레이 진행
      b. 에러가 발생하는 경우 다음 과정을 진행
    3. 게스트 로그인 버튼
      a. 1-a 과정에서 넘어온 경우 게스트 로그인 버튼 활성화
      b. 1-b나 2번과정에서 넘어온 경우 GetGuestID 함수를 통해 로컬에 저장된 게스트 계정 정보를 확인
      => 정보가 확인되지 않는 경우 게스트 로그인 버튼 비활성화, 정보가 확인되는 경우 게스트 로그인 버튼 활성화
    4. 페더레이션 로그인 버튼은 기본적으로 활성화
  • 로그인이 이루어진 상황

    1. 로그인 직후 GetUserInfo 함수를 통해 유저정보를 조회한 후 로그인 타입 정보를 캐싱
    2. 해당 정보에 따라 커스텀 계정인 경우 페더레이션 버튼을 활성화, 페더레이션 계정인 경우 비활성화
    3. 페더레이션 연동이 완료된 경우 DeleteGuestInfo 함수를 통해 로컬에 저장된 게스트 계정 정보를 삭제 처리 (3-b의 게스트 로그인 비활성화 과정을 위해 해당 과정이 꼭 필요합니다.)

답변 감사합니다. 잘 해결될수 있을꺼 같습니다

좋아요 1