본문 바로가기
개발/Unity

Unity)Firebase) Unity 연동하기

by 테샤르 2020. 9. 9.

Firebase Unity 연동하기

Unity에서 Firebase를 연동해서 Auth 까지 진행하는 포스팅이다.

 

Firebase  설명은 다음과 같다. 

개발하는 과정에서 필요한 솔루션(지표, 푸쉬, 이벤트, 플랫폼 로그인, 스토리지, DB등)을 지원해주는 모바일 웹 어플리케이션 개발 플랫폼 이다.

 

 

반응형

Firebase에서 로그인을 진행하고 프로젝트 만들기를 진행한다.

프로젝트이름 (파이어베이스 콘솔에서 확인할 이름)

여기서 Google 애널리틱스를 사용을 추천한다. 계정이 있으면 계정을 선택한다.

프로젝트 만들기를 진행하면 프로젝트가 생성된다. 이후의 가이드는 Firebase의 가이드를 참고한다.

https://firebase.google.com/docs/auth/unity/start?hl=ko

 

Unity에서 Firebase 인증 시작하기

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

firebase.google.com

인증을 진행하는 과정에서는 여러가지가 존재하는데 아무 플롯폼이든 상관없는 익명 계정을 진행할 예정이다.

 

 

Unity 에서 프로젝트의 정보를 입력한다.

 

 [google -services.json]을 다운받아서 Unity 프로젝트의 Assets 안에 임포트한다.

 

이후에는 Unity 에 포함할 SDK를 다운해서 해당 프로젝트에 임포트한다.

폴더를 열어보시면 dotnet3와 dotnet4가 있는데.

Unity 버전에 따라 .NET 프레임워크가 버전이 다르기 때문에 환경을 잘 보고 임포트해야한다.
 dotnet3 : Unity 5.x 이하 버전 
 dotnet4 : Unity 2017.x 이상 버전

 

 

이렇게 셋팅이 다되면 콘솔에서 [Authentication] - [Sign-in method]에서 로그인방식에서 '익명'을 사용설정한다.

 

 

 

이후 프로젝트에서 익명계정생성 or 익명 계정으로 로그인이 잘되는지 테스트한다.

 

using UnityEngine;
using Firebase.Auth;
using Firebase.Extensions;

public class SceneTest : MonoBehaviour
{
    FirebaseAuth auth = null;
    Firebase.DependencyStatus dependencyStatus = Firebase.DependencyStatus.UnavailableOther;
    Firebase.Auth.FirebaseUser user;

    #region Unity Method

    void Start()
    {
        auth = FirebaseAuth.DefaultInstance;
        Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWithOnMainThread(task =>
        {
            dependencyStatus = task.Result;
            if (dependencyStatus == Firebase.DependencyStatus.Available)
            {
                InitializeFirebase();
            }
            else
            {
                Debug.LogError(
                  "Could not resolve all Firebase dependencies: " + dependencyStatus);
            }
        });
    }

    void Update()
    {

    }
    void OnDestroy()
    {
        auth.StateChanged -= AuthStateChanged;
        auth = null;
    }

    #endregion

    #region Private Method



    private void InitializeFirebase()
    {
        Debug.Log("Setting up Firebase Auth");
        auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
        auth.StateChanged += AuthStateChanged;
        AuthStateChanged(this, null);

    }

    private void AuthStateChanged(object sender, System.EventArgs eventArgs)
    {
        if (auth.CurrentUser != user)
        {
            bool signedIn = user != auth.CurrentUser && auth.CurrentUser != null;
            if (!signedIn && user != null)
            {
                Debug.Log("Signed out " + user.UserId);
            }
            user = auth.CurrentUser;
            if (signedIn)
            {
                Debug.LogFormat("Signed in : <color='red'>{0}</color>", user.UserId);
            }
        }
        else{
			this.ClickLogin();
		}
    }

    #endregion
    #region Public Method

    #endregion


    #region Click Method
    public void ClickLogin()
    {
        Debug.Log("[Auth] Sing Login ");


        auth.SignInAnonymouslyAsync().ContinueWith(task =>
        {
            if (task.IsCanceled)
            {
                Debug.LogError("SignInAnonymouslyAsync was canceled.");
                return;
            }
            if (task.IsFaulted)
            {
                Debug.LogError("SignInAnonymouslyAsync encountered an error: " + task.Exception);
                return;
            }

            user = task.Result;
            Debug.LogFormat("User signed in successfully: {0} ({1})",
                user.DisplayName, user.UserId);
        });
    }

    public void ClickLogOut()
    {
        Debug.Log("[Auth] Sing Out ");
        auth.SignOut();
    }

    #endregion
}

정상적으로 생성이된것을 확인할 수 있다.

 

 

 

 ★

 

반응형

댓글