GPGS v2 사용에 관해서 질문드립니다.

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

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

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

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

GPGS 10.14 버전에서 11.01 버전으로 업데이트 할 경우

  1. GPGS 버전을 업데이트 해도 GPGS v1 로 구현한 구글 로그인이 사용가능한가요?
  2. GPGS V1로 로그인 한 유저가 GPGS V2로 로그인 불가능 할 경우 어떻게 하면 로그인 가능하도록 할 수 있나요?

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

  1. GPGS 11.01 버전 업그레이드 시 뒤끝의 GPGS V1 로그인은 사용이 불가합니다.
    Sign In with Google(뒤끝 Google Login SK) 을 이용하거나 GPGS V2 를 이용해야합니다.

  2. GPGS V1으로 로그인한 유저가 존재하는 상황에서 GPGS 11.01버전으로 업그레이드 한 경우,
    뒤끝의 Google Login SDK를 이용해 로그인을 구현해 준다면 유저들은 기존 정보 그대로 이용이 가능합니다.


GPGS 및 SIGN IN WITH GOOGLE 이용 주의사항

구분 GPGS V2 GPGS V1 Sign In with Google
로그인 정보 PGS games_lite 정보 이용 구글 계정 정보 이용 구글 계정 정보 이용
계정간 호환 GPGS V2 단독
GPGS V1 및 Sign In with Google 호환 불가
Sign In with Google 호환
GPGS V2 호환 불가
GPGS V1 호환
GPGS V2 호환 불가
iOS 지원 미지원 미지원 지원

GPGS V1으로 로그인한 유저가 존재하는 상황에서 GPGS 11.01버전으로 업그레이드 한 경우, 뒤끝의 Google Login SDK를 이용해 로그인을 구현 하라고 답글 주셨는데 그렇게 될 경우 GPGS v2가 아닌 뒤끝 Google Login SDK 로그인 기능을 구현해야 된다는 말씀이실까요?

GPGS V1을 사용해서 아래와 같이 구현된 코드가 있을 경우

public void GPGSLogin(Action<BackendReturnObject> ac_backendsuccess)
    {
#if UNITY_ANDROID
        // 이미 로그인 된 경우
        if (Social.localUser.authenticated == true)
        {
            BackendReturnObject BRO = Backend.BMember.AuthorizeFederation(GetTokens(), FederationType.Google, "gpgs");
            ac_backendsuccess?.Invoke(BRO);
        }
        else
        { 

PlayGamesPlatform.Instance.Authenticate(ProcessAuthentication)

        }

수정하게 될 경우

 public void GPGSV2_Login(Action<BackendReturnObject> ac_backendsuccess)
    {
#if UNITY_ANDROID
        // 이미 로그인 된 경우
        if (Social.localUser.authenticated == true)
        {
            BackendReturnObject BRO = TheBackend.ToolKit.GoogleLogin.Android.GoogleLogin(true, GoogleLoginCallback); ;
        }
        else
        {
            Social.localUser.Authenticate((bool success) => {
                if (success)
                {
                    // 로그인 성공 -> 뒤끝 서버에 획득한 구글 토큰으로 가입 요청
                    BackendReturnObject bro = Backend.BMember.GetGPGS2AccessToken(google_code);
                    if (bro.IsSuccess())
                    {
                        string accessToken = googleCallback.GetReturnValuetoJSON()["access_token"].ToString();

                        ac_backendsuccess?.Invoke(bro);
                    }
                }
                else
                {
                    // 로그인 실패
                    Debug.Log("Login failed for some reason");
                }
            });
        }
#endif
    }

    private void GoogleLoginCallback(bool isSuccess, string errorMessage, string token)
    {
        if (isSuccess == false)
        {
            Debug.LogError(errorMessage);
            return;
        }

        Debug.Log("구글 토큰 : " + token);
        var bro = Backend.BMember.AuthorizeFederation(token, FederationType.Google);
        Debug.Log("페데레이션 로그인 결과 : " + bro);

        if (bro.isSuccess())
        {
            ac_backendsuccess?.Invoke(bro);
        }

    }

    void ProcessAuthentication(SignInStatus status)
    {
        if (status == SignInStatus.Success)
        {
            GetAccessCode();
        }
    }
    
    
    public void GetAccessCode()
    {
        PlayGamesPlatform.Instance.RequestServerSideAccess(
          /* forceRefreshToken= */ false,
          code => {
              Debug.Log("구글 인증 코드 : " + code);

              Backend.BMember.GetGPGS2AccessToken(code, googleCallback =>
              {
                  Debug.Log("GetGPGS2AccessToken 함수 호출 결과 " + googleCallback);

                  string accessToken = "";

                  if (googleCallback.IsSuccess())
                  {
                      accessToken = googleCallback.GetReturnValuetoJSON()["access_token"].ToString();
                  }

                  Backend.BMember.AuthorizeFederation(accessToken, FederationType.GPGS2, callback =>
                  {
                      Debug.Log("뒤끝 로그인 성공했습니다. " + callback);
                  });
              });
          });
    }

처럼 구현해야 된다는 말씀일까요?

GPGS 11.xx 이상 버전에서 openid 정보를 불러올 수 없게되면서
기존 GPGS V1을 통해 로그인하던 유저는 더 이상 로그인이 불가합니다.
GPGS V2 로그인을 하는 경우 PGS games_lite 정보를 이용해 로그인하기에 완전히 새로운 계정으로 로그인하게 됩니다.

따라서 뒤끝의 Google Login SDK을 통해서 로그인을 구현해야 기존 정보로 로그인이 가능합니다.

뒤끝의 Google Login SDK와 GPGS V2는 전혀 다른 로그인 방식으로,
GPGS 11.xx 업데이트 후에는

  1. 뒤끝의 Google Login SDK, GPGS V2 두 로그인 방식을 모두 사용하거나 (로그인 페이지에 두 로그인 방식 버튼을 모두 제공)
  2. 뒤끝의 Google Login SDK를 이용하도록 구성해 주셔야 합니다.

아래는 뒤끝 Google Login SDK를 이용하는 로그인 예제 코드입니다.

public void StartGoogleLogin() {
    TheBackend.ToolKit.GoogleLogin.Android.GoogleLogin(true, GoogleLoginCallback);
}

private void GoogleLoginCallback(bool isSuccess, string errorMessage, string token) {
    if (isSuccess == false) {
        Debug.LogError(errorMessage);
        return;
    }
    
    Debug.Log("구글 토큰 : " + token);
    var bro = Backend.BMember.AuthorizeFederation(token, FederationType.Google);
    Debug.Log("페데레이션 로그인 결과 : " + bro);
}