GPGS 페더레이션 인증의 콜백이 불리지 않습니다

  • 뒤끝 SDK 버전 : Backend-5.11.1 [2023-08-29]
  • 프로젝트명 : AdmobTest
  • 스테이터스 코드 :
  • 에러 코드 :
  • 에러 메시지 :

안녕하세요! gpgs federation 인증을 하려는 데 어려움을 겪고 있어 문의 남깁니다!

아래와 같이 코드를 작성했지만, 콜백이 불리지 않고 있습니다.

다른 문의글을 보아 직접 에러코드를 알려주시는 것으로 보입니다. 저 역시도 어떤 에러때문에 인증을 못하고 있는지 여쭈어봅니다!

    public void AttemptLoginToBackend(string _token)
    {
        // 뒤끝 backend를 초기화합니다.
        BackendReturnObject _bro = null;
        if (Backend.IsInitialized == false)
            _bro = Backend.Initialize(true);

        if (_bro != null && _bro.IsSuccess() == false)
        {
            Debug.LogError("Backend Initialize Failed!");
            Debug.LogError(_bro.GetMessage());
            return;
        }

        // 뒤끝 send queue를 초기화합니다.
        if (SendQueue.IsInitialize == false)
            SendQueue.StartSendQueue(true, _exception => { Debug.LogError(_exception); });

        if (SendQueue.IsInitialize == false)
            Debug.LogError("SendQueue Initialize Failed!");

        // 뒤끝 backend에 로그인을 시도합니다.
        Backend.BMember.AuthorizeFederation(_token, FederationType.Google, "GPGS로 가입함", bro =>
        {
            Debug.Log(bro.GetMessage());

            if (bro.IsSuccess())
            {
                OnBackendLoginSuccess(bro);
            }
            else
            {
                Debug.Log($"error code: {bro.GetErrorCode()}");
                Debug.Log($"message: {bro.GetMessage()}");
                Debug.Log($"return value: {bro.GetReturnValue()}");
                Debug.Log("Backend Login Failed!");
                backendAuthStatusText.text = "Backend Login Failed!";
                backendAuthStatusText.color = Color.red;
            }
        });
    }

다음 이미지들은 설정들입니다.

image

뒤끝 콘솔에 입력한 google hash는 다음과 같습니다.

릴리즈 키로, google play console에서 확인할 수 있는 앱 서명 키 sha-1 인증서 지문의 GoogleHashKey를 집어 넣었습니다.

디버그 키로 하나는 play console에서 확인할 수 있는 업로드 키 sha-1 인증서 지문의 GoogleHashKey를, 다른 하나로는 unity의 build settings/Publishing Settings에서 사용하는 keystore 파일로부터 아래 명령어를 사용해 얻었습니다.

keytool -exportcert -alias androiddebugkey -keystore user.keystore -storepass android -keypass android   | openssl sha1 -binary   | openssl base64

이상입니다. 도움을 주시면 감사하겠습니다!

안녕하세요 개발자님.
남겨주신 정보를 통해 에러 정보 확인 시 아래와 같이 확인됩니다.

스테이터스 코드 : 401
에러 코드 : BadUnauthorizedException
에러 메시지 : bad bad google accessToken, 잘못된 bad google accessToken 입니다.

위 에러는 뒤끝의 accessToken 이 아닌, 구글의 accessToken 정보가 잘못되어 발생하는 에러입니다.
구글 로그인 후 구글로부터 넘어오는 토큰 값을 확인하여 이용 부탁드립니다. :D

친절한 답변 감사드립니다!

프로젝트에서 gpgs 버전 11.01을 사용하고 있고, PlayGamesPlatform.Instance.RequestServerSideAccess로 얻은 토큰을 뒤끝 페더레이션 토큰으로 건네주고 있습니다.

코드는 아래와 같습니다.

    private void OnGpgsLoginSuccess()
    {
        Debug.Log("GPGS Login Success!");
        googleAuthStatusText.color = Color.green;

        // v11.01+
        PlayGamesPlatform.Instance.RequestServerSideAccess(false, _token =>
        {
            Debug.Log($"tokens: {_token}");
            googleAuthStatusText.text = "GPGS Login Success! " + _token;
            googleAuthStatusText.color = Color.blue;

            if (string.IsNullOrWhiteSpace(_token))
            {
                // 토큰을 받아오는 데 실패했습니다. web client id를 확인해주세요.
                Debug.LogError("token is null or whitespace");
            }
            else
            {
                AttemptLoginToBackend(_token);
            }
        });

        // old version
        // string _token = PlayGamesPlatform.Instance.GetIdToken();
        // Debug.Log($"tokens: {_token}");
        // googleAuthStatusText.text = "GPGS Login Success! " + _token;
        // googleAuthStatusText.color = Color.blue;
        // AttemptLoginToBackend(_token);
    }

원래 gpgs 버전 10으로 로그인을 시도했으나, gpgs의 GetIdTokens()가 빈 문자열만을 반환해 11로 올렸습니다.
11 버전으로 받아온 토큰으로 로그인은 불가능한가요? gpgs 10버전에서 얻는 토큰과 11버전으로 얻는 토큰이 다른 건가요?

다시 한 번 미리 감사의 말씀 드립니다!

현재 뒤끝은 GPGS 10 버전을 지원하고 있습니다.
GPGS 최신버전인 11 버전은 지원되지 않고 있는 점 참고하여 이용해 주시면 감사하겠습니다.
(추후 지원 예정에 있으며, 현재 기술 검토가 진행되고 있습니다.)

좋아요 1

gpgs 버전을 10.14로 변경하고 토큰을 얻었습니다.

아래 코드로 뒤끝 로그인을 시도했습니다.

        // 뒤끝 backend에 로그인을 시도합니다.
        Backend.BMember.AuthorizeFederation(_token, FederationType.Google, "GPGS로 가입함", bro =>
        {
            if (bro.IsSuccess())
            {
                Debug.Log("Backend Login Success!");
                OnBackendLoginSuccess(bro);
            }
            else
            {
                Debug.Log($"error code: {bro.GetErrorCode()}");
                Debug.Log($"message: {bro.GetMessage()}");
                Debug.Log($"return value: {bro.GetReturnValue()}");
                Debug.Log("Backend Login Failed!");
                backendAuthStatusText.text = "Backend Login Failed!";
                backendAuthStatusText.color = Color.red;
            }
        });

아래 사진처럼 뒤끝 콘솔에서 로그인 성공 로그도 확인할 수 있었습니다.

하지만 여전히 뒤끝 콜백을 못받고 있는데 다시 이유를 여쭈어봐도 괜찮을까요??

부탁드립니다!

안녕하세요 개발자님.

뒤끝 초기화 시, Backend.Initizilize(userAsyncPoll = false)에서 인자값에 true를 입력할 경우, 함수 호출 후에 응답값을 외부쓰레드에서 메인쓰레드로 받아오는 추가적인 로직이 있기 때문에, 스크립트에 추가적인 로직이 필요합니다.

void Update() {
    if(Backend.IsInitialized) {
        Backend.AsyncPoll();
    }
}

Backend.AsyncPoll() 함수가 주기적으로 호출되고 있는지 확인해주시면 감사하겠습니다.

현재 프로젝트에 GPGS 최신버전인 11 버전을 적용중입니다.

구글 로그인이 안되서 커뮤니티를 찾아보다가 방금 확인을 했는데, 혹시 언제쯤 지원이 될 예정인지 알 수 있을까요? 적용 시기가 늦는다면 GPGS 버전을 다운그레이해서 진행하려고합니다.

안녕하세요, 개발자님.
GPGS V2 가 정기 업데이트(27일)를 통해 지원될 예정입니다.

GPGS는 V1 에서 v2로 업데이트 되면서 기존에 구글에서 사용중인 고유 ID를 사용하지 못하게 되었습니다.
이에 V1 페데레이션 로그인을 하다가 V2로 변경하게 되면 동일한 아이디임에도 새로운 유저로 회원가입이 이루어지게 됩니다.

따라서 기존에 GPGS를 이용해오셨고 마이그레이션을 해야하는 경우에는,
GPGS V2가 아닌 구글 로그인(Sign in with Google) 이용해야 하는 점 꼭 확인해 주시면 감사하겠습니다.

감사합니다.