개발이야기

[Unity] GameCenter로 Firebase인증하기

Kim_Jack 2021. 5. 31. 22:34
반응형

GameCenter로 Firebase인증하기 

유니티에서 IOS Game Center → FireBase 접속

 

https://firebase.google.com/docs/auth/unity/start?authuser=0 

 

Unity에서 Firebase 인증 시작하기

Firebase 인증을 사용하면 사용자가 이메일 주소와 비밀번호 로그인 및 제휴 ID 공급업체(예: Google 로그인, Facebook 로그인)를 비롯한 1개 이상의 로그인 방법을 사용해 게임에 로그인할 수 있습니다.

firebase.google.com

자 우선 여기가 파이어베이스 메뉴얼인데, 이 글을 보면 Game Center로 로그인하는 카테고리만 쏙 빠져있다.

 

 

이 부분 때문에 처음에는 Xcode로 빌드해서 파이어베이스 연동 부분을 네이티브로 짜야하나? 라는 끔찍한 생각을 했다.

하지만 구글링을 하다가 해결책을 찾았다. 

 

firebase/quickstart-unity

 

firebase/quickstart-unity

Firebase Quickstart Samples for Unity. Contribute to firebase/quickstart-unity development by creating an account on GitHub.

github.com

이 깃 에 들어가면 Unity에서 Firebase에 관련된 거의 모든 코드들이 들어있다. 

Firebase를 사용해서 구현할 부분들은 이 깃을 참고하면 많이 도움이 될 거 같다.

 

auth 폴더에서 Game Center로 파이어베이스를 접속하는 부분을 찾아서 본인의 코드에 붙여 넣으면 된다.

 

void LoginProcess_GameCenter()
    {
        Debug.Log("LoginProcess_GameCenter");
         SignInWithGameCenterAsync();
    }

    public Task SignInWithGameCenterAsync()
    {
        FirebaseAuth auth = FirebaseAuth.DefaultInstance;
        var credentialTask = Firebase.Auth.GameCenterAuthProvider.GetCredentialAsync();
        var continueTask = credentialTask.ContinueWithOnMainThread(task =>
        {
            if (!task.IsCompleted)
                return null;

            if (task.Exception != null)
                Debug.Log("GC Credential Task - Exception: " + task.Exception.Message);

            var credential = task.Result;

            var loginTask = auth.SignInWithCredentialAsync(credential);
            return loginTask.ContinueWithOnMainThread(HandleSignInWithUser);
        });

        return continueTask;
    }


    // Called when a sign-in without fetching profile data completes.
    void HandleSignInWithUser(Task<Firebase.Auth.FirebaseUser> task)
    {
        //EnableUI();
        if (LogTaskCompletion(task, "Sign-in"))
        {
            Debug.Log(String.Format("{0} signed in", task.Result.DisplayName));
        }
    }

    // Log the result of the specified task, returning true if the task
    // completed successfully, false otherwise.
    protected bool LogTaskCompletion(Task task, string operation)
    {
        bool complete = false;
        if (task.IsCanceled)
        {
            Debug.Log(operation + " canceled.");
        }
        else if (task.IsFaulted)
        {
            Debug.Log(operation + " encounted an error.");
            foreach (Exception exception in task.Exception.Flatten().InnerExceptions)
            {
                string authErrorCode = "";
                Firebase.FirebaseException firebaseEx = exception as Firebase.FirebaseException;
                if (firebaseEx != null)
                {
                    authErrorCode = String.Format("AuthError.{0}: ",
                      ((Firebase.Auth.AuthError)firebaseEx.ErrorCode).ToString());
                }
                Debug.Log(authErrorCode + exception.ToString());
            }
        }
        else if (task.IsCompleted)
        {
            Debug.Log(operation + " completed");
            complete = true;
        }
        return complete;
    }

 

성공 ! 

 

 

 

https://hub1234.tistory.com/43?category=376918 

 

[Unity] IOS Game Center 로그인하기 (매우 쉬움)

Unity IOS Game Center 로그인하기 애플 로그인을 하려면 따로 플러그인을 받아줘야 하지만, 게임센터는 Unity에서 API를 지원해주기에, 비교적 매우 손쉽게 연동이 가능하다. 자 우선 첫 번째, 앱스

hub1234.tistory.com

 

https://hub1234.tistory.com/41?category=376918 

 

[Unity] 유니티에서 IOS빌드하기 2021Ver, Xcode빌드, IOS Simulator 실행하기

Unity IOS 빌드하기 Xcode에서 빌드하기, IOS Simulator 테스트하기 현재 하고있는 프로젝트에서 IOS로 빌드하기 위해 했던 저의 시도들과 방법들을 공유한다. 우선 정리를 잘해놓으신 블로그를 참고하

hub1234.tistory.com

 

반응형