ChangeCustomToFederation 오류 (Bad Token)

    public void CustomToFederationGoogle()
    {
        Backend.BMember.ChangeCustomToFederation("federationToken", FederationType.Google, callback =>
        {
            if (callback.IsSuccess())
            {
                Debug.Log("로그인 타입 전환에 성공했습니다");
            }
            else
            {
                Debug.Log(callback.GetStatusCode());
                Debug.Log(callback.GetMessage());
            }
        });
    }

    public void CustomToFederationApple()
    {
        var bro = Backend.BMember.ChangeCustomToFederation("federationToken", FederationType.Apple);
        if (bro.IsSuccess())
        {
            Debug.Log("로그인 타입 전환에 성공했습니다");
        }
        else
        {
            Debug.Log(bro.GetStatusCode());
            Debug.Log(bro.GetMessage());
        }
    }

이렇게 마이그레이션 기능을 만들었는데, 실행하면
401: bad google accessToken, 잘못된 bad google accessToken 입니다
오류가 뜹니다.
“federationToken” 문자열을 그대로 작성하는 게 아니라. 이 문자열 안에 구글과 애플 각각의 토큰을 받아오는 건가요?
만약 그렇다면 어떻게 받아오나요?
그 토큰

빌드 후 안드로이드/iOS 기기에서 테스트 했고, 일단 구글만 테스트 했습니다. iOS의 경우 https://docs.thebackend.io/sdk-docs/backend/toolkit/google-login/iOS/ios-settings/?_gl=11ujh0xe_gcl_auMTg1NTIwODIwNS4xNzI5NzM3OTY5_gaMTY2ODk3ODQzLjE3Mjk3Mzc5NzA._ga_4CS1BC2PY4MTczMDcyODg3My45LjEuMTczMDczMzcwNi41OS4wLjA._ga_G76ZQT04KW*MTczMDczMTg5OS4xLjEuMTczMDczMzQ2Mi42MC4wLjA.&_ga=2.134995186.2091884852.1730728874-166897843.1729737970
이 링크를 보고 설정까지 완료했습니다.

안녕하세요 개발자님,
아래는 뒤끝에서 제공하는 구글 로그인 예제 코드입니다.

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);
}

구글 로그인에 성공하는 경우 GoogleLoginCallback 에서 구글의 access token을 받아옵니다.
이 토큰이
Backend.BMember.AuthorizeFederation 또는 Backend.BMember.ChangeCustomToFederation 함수에 전달되어
“federationToken” 문자열 대신 실제 구글 로그인에서 받은 유효한 access token을 전달해야 하니 참고하여 수정 이용해 주시면 감사하겠습니다.

처음에는 Custom Login이 되어있는 상태인데, Access Token을 어떻게 받아오나요?

    public void StartGoogleLogin()
    {
#if UNITY_ANDROID
        Android.GoogleLogin(Statics.WEB_CLIENT_ID, GoogleLoginCallback);
#endif

#if UNITY_IOS
        iOS.GoogleLogin(GoogleLoginCallback);
#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);
        accessToken = token;
    }

    public void CustomToFederationGoogle()
    {
        StartGoogleLogin();
        Backend.BMember.ChangeCustomToFederation(accessToken, FederationType.Google, callback =>
        {
            if (callback.IsSuccess())
            {
                Debug.Log("로그인 타입 전환에 성공했습니다");
            }
            else
            {
                Debug.Log(callback.GetStatusCode());
                Debug.Log(callback.GetMessage());
            }
        });
    }

이런 식으로 코드를 짜 봤는데, 정상적으로 토큰을 받아와서 로그인이 되지만,
계정이 새롭게 만들어지게 되어 이전 Custom 기록이 전부 날아가게 됩니다.

  1. Custom에서 Google, Apple 등으로 Federation하기 위해서는 ChangeCustomToFederation 함수를 호출해야 하는데, 이 때 AccessToken 값이 필요하다.
  2. AccessToken 값은 GoogleLoginCallback 등의 함수에서 얻을 수 있는데, 이 경우 AuthorizeFederation 함수를 호출해 새롭게 아이디를 생성하고 로그인까지 진행한다.
  3. 기존의 게스트 계정으로는 이제 로그인할 수 없으며, 게스트 계정에서 새로 만든 Federation 계정으로 정보를 이관한 뒤 게스트 계정을 삭제해주어야 한다.

이런 플로우로 동작하는 게 맞나요?

개발자님, 추가 문의하신 내용 확인하여 답변드립니다.
타이틀에서 첫 로그인 또는 기존에 구글 계정으로 연동된 경우에는 AuthorizeFederation()를 사용하지만,
이미 커스텀 계정으로 로그인한 경우 ChangeCustomToFederation()를 사용하여 구글 / 애플 계정과 연동하는 작업을 해야합니다.
커스텀 계정을 페더레이션으로 전환하는 버튼을 게임에서 눌렀을때,
그에 맞는 구글/애플 로그인 과정을 거쳐 토큰을 가져오고 ChangeCustomToFederation()를 호출하게 구성해주셔야 합니다.
이후 유저가 다시 게임 로그인시에는 연동이 완료되었으므로, AuthorizeFederation()로 로그인을 하면 기존의 커스텀계정으로 로그인이 가능합니다.

좋아요 1