IOS 로그인 토큰 관련 문의

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

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

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

  • 뒤끝 SDK 버전 : 5.11.7
  • 프로젝트명 : 무사키우기
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 : undefined refresh_token, refresh_token

이번에 SDK 업그레이드 버전으로 로그인 관련 로직을 수정했습니다.

  public void AOSGoogleLogin()
    {
        TheBackend.ToolKit.GoogleLogin.Android.GoogleLogin(GoogleLoginCallback);
    } 
    public void IOSGoogleLogin()
    {
        TheBackend.ToolKit.GoogleLogin.iOS.GoogleLogin(GoogleLoginCallback);
    }

 private void GoogleLoginCallback(bool isSuccess, string errorMessage, string token)
    {
        if (isSuccess == false)
        {
            Debug.LogError(errorMessage);
            return;
        }
        var bro = Backend.BMember.AuthorizeFederation(token, FederationType.Google);

        if (bro.IsSuccess())
        {
            SetNickname();
        }
    }

로그인신에서 토큰로그인 성공 결과로 구분을 하고 있습니다.

BackendReturnObject bro = Backend.BMember.LoginWithTheBackendToken();

안드로이드는 구글 로그인 한번 진행 후 다음부터 토큰으로 로그인이 잘 진행되지만
IOS는 구글 로그인 진행 후 다음에도 bro 결과가 undefined refresh_token, refresh_token라는 오류를 뱉어내고 있습니다.

AuthorizeFederation 함수를 사용하면 자연스럽게 토큰이 생성되는걸로 알고있습니다.
안드로이드는 토큰이 잘 생기고 IOS는 토큰이 올바르게 생성되지 않는것 같은데 해결을 어떤식으로 해야 하나요

안녕하세요 개발자님,
확인 시 토큰 로그인 과정에서 refresh token 정보가 null로 요청되어 해당 에러가 발생한 상황으로 확인됩니다.
로그인 이후 refresh token 및 access token이 생성되어 매 요청시마다 검증 후 처리가 이루어지도록 되어있으며,
토큰값이 존재하지 않는다면 게임 플레이가 불가합니다.

로그아웃 후 재접속하는 등 토큰값이 존재하지 않는 상황이 발생할 수 있는지 확인하여 주시면 감사하겠습니다.

제가 테스트하고 있는 상황은 게임을 종료한뒤 다시 접속하는 상황입니다.
로그아웃 상황은 아닙니다.
안드로이드 빌드본에서는 문제가 없지만 IOS에서 문제가 발생하고 있습니다.

 public void IOSGoogleLogin()
    {
        TheBackend.ToolKit.GoogleLogin.iOS.GoogleLogin(GoogleLoginCallback);
    }

 private void GoogleLoginCallback(bool isSuccess, string errorMessage, string token)
    {
        if (isSuccess == false)
        {
            Debug.LogError(errorMessage);
            return;
        }
        var bro = Backend.BMember.AuthorizeFederation(token, FederationType.Google);

        if (bro.IsSuccess())
        {
            SetNickname();
        }
    }

토큰이 없을때 로그인 구조는 위 코드와 같습니다

Backend.BMember.AuthorizeFederation 이 함수 사용하면 자동으로 토큰이 로컬에 저장되는걸로 알고 있습니다.
원래 IOS는 제가 토큰을 따로 로컬에 저장을해줘야 하는건가요?
그리고 뒤끝 토큰이 없을떄 자동로그인을 진행할 수 있는 방법이 있나요?

게임 종료 전 RefreshTheBackendToken 함수를 호출하여 정상 호출이 이루어지는지 여부를 확인해주실 수 있을까요?

넵 혹시 게임 진행중에 호출하여도 가능한가요

네, 토큰 갱신 함수로 게임 진행중에도 호출 가능한 함수입니다.

ios 빌드 진행중이라 시간이 좀 소요될것 같습니다.

해당 함수가 정상적으로 호출된다면 refresh token이 정상적으로 존재하는 것입니다.
참고해 주시면 감사하겠습니다 ^^

해당 함수는 정상적으로 호출이 되는걸로 확인했습니다.
게임종료후 다시 시작시 LoginWithTheBackendToken 결과가 에러로 뜨는건 처음 로그인 로직이 잘못된거라고 생각하면 될까요?

안녕하세요 개발자님.

커스텀 로그인, 페데레이션 로그인, 토큰 로그인이 성공하면 디바이스에 토큰 정보가 저장이 됩니다.
해당 토큰 정보가 사라지는 경우에는 캐시 클리어, 로그아웃, 다른 client_app_id로 프로젝트 초기화 시에 토큰은 사라질 수 있습니다.

만약 위와 같은 상황이 아니라면 단순 게임 접속 만으로는 제거되지는 않을 것입니다.
애플에서는 무조건 게임 종료 후 다시 실행 시에는 토큰 로그인이 불가능한 상황일까요? 혹은 간혈적인 상황일까요? 또한 지속적으로 에러가 발생하는 유저가 존재한다면 공유해주시면 감사하겠습니다.(애플의 정책에 의해 로컬 데이터 접근 권한이 달라졌을 가능성도 있습니다.)

뒤끝 SDK를 5.11.7로 업그레이드하면서 구글 로그인 SDK도 2.1.0으로 업그레이드해서
로그인쪽 로직을 수정하고 있습니다.

업그레이드 되면서 ios 환경에서 토큰이 저장이 안되고 있는것으로 파악이 됩니다.

public void StartGoogleLogin() {
TheBackend.ToolKit.GoogleLogin.iOS.GoogleLogin(GoogleLoginCallback);
}

지금 현재는 게임 종료 후 다시 실행 시에는 토큰 로그인이 에러가 뜨는 상황입니다.

업그레이드 중이기에 지속적으로 에러가 발생하는 유저는 존재하지 않습니다.

ios환경에서는 따로 PlayerPrefs를 사용하여 토큰을 저장하여 로그인하는 방식으로 수정해도 괜찮을까요?

애플의 토큰은 제한 시간이 있어, 하루를 경과하는 경우 유효하지 않은 토큰이 될 것입니다.
따라서, PlayerPrefs 를 사용하여 로컬에 저장하더라도 사용이 불가한 점 참고 부탁드립니다.