• 티스토리 홈
  • 프로필사진
    개양반
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
개양반
  • 프로필사진
    개양반
    • Everybody Happyvirus (87)
      • Unity DOTS (19)
        • ECS Sample Projtect (8)
        • Unity.Physics (1)
        • TIP (9)
      • Unity Assets 추천 (6)
        • BG Database (5)
        • I2 Localization - 현지화 (1)
      • Unity 자습서 (15)
        • Addressable (4)
        • 유니티 + 파이어베이스 (0)
        • GamingServices (10)
      • 주식 이야기 (4)
        • 회사 소개 (2)
        • 회사 정보 (1)
        • 실적 발표 (0)
      • 일상 생활 (9)
        • 도서리뷰 (2)
        • 제품리뷰 (6)
      • 게임일기 (2)
        • 리그오브레전드 (2)
      • 게임소개 (4)
      • 게임리뷰 (7)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • 파이어베이스 유니티 로그인(이메일/비밀번호)
        2017년 11월 16일
        • 개양반
        • 작성자
        • 2017.11.16.:28

        파이어베이스(Firebase) 로 할 수 있는 로그인

         


         

        구글, 페이스북, 전화, 이메일/비밀번호, 트위터, GitHub 등 다양한 로그인을 지원해주는데요.

        이메일과 비밀번호로 로그인하는 방법에 대해 알아보겠습니다.

         

        로그인 SDK 설치하기


        FirebaseAuth.unitypackage 파일을 유니티로 임포트합니다.

        SDK 를 유니티에 임포트하는 방법에 대해서는 지난 포스트를 확인해주세요.

        유니티에 SDK 임포트하는 방법 보러가기

         

         

        콘솔창에서 이메일/비밀번호 활성화하기


        파이어베이스 콘솔창으로 이동합니다.

        Develop > Authentication > 로그인방법 에서 이메일/비빌번호를 활성화합니다.

         

         

        해당 내용이 변경되면 google-services.json 파일이 변경됩니다. 

        Project Overview 옆에 톱니바퀴를 눌러 프로젝스 설정 버튼을 누르면 google-services.json 파일을

        다시 받을 수 있는 페이지로 이동합니다.

        번거롭지만  google-services.json 을 다시 다운받아서 유니티에 임포트해줍니다. 

        (기존의 google-services.json을 삭제하고 새로 넣어주세요.)

         

         

        신규 사용자 가입


        UGUI로 이메일과 비밀번호를 입력할 수 있는 InputField 와 Join버튼을 만듭니다.

         

         

         

        C# 스크립트 - Login 을 만들고 아래 코드를 입력합니다.

        using UnityEngine;
        using UnityEngine.UI;
        using Firebase.Auth;
        
        public class Login : MonoBehaviour {
        
            [SerializeField] string email;
            [SerializeField] string password;
        
            public InputField inputTextEmail;
            public InputField inputTextPassword;
            public Text loginResult;
        
        
        
            FirebaseAuth auth;
            void Awake()
            {
                // 초기화
                auth = FirebaseAuth.DefaultInstance;
            }
        
        
            // 버튼이 눌리면 실행할 함수.
            public void JoinBtnOnClick()
            {
                email = inputTextEmail.text;
                password = inputTextPassword.text;
        
                Debug.Log("email: " + email + ", password: " + password);
        
                CreateUser();
            }
            
        
            void CreateUser()
            {
                auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
                    if (task.IsCanceled)
                    {
                        Debug.LogError("CreateUserWithEmailAndPasswordAsync was canceled.");
                        loginResult.text = "회원가입 실패";
                        return;
                    }
                    if (task.IsFaulted)
                    {
                        Debug.LogError("CreateUserWithEmailAndPasswordAsync encountered an error: " + task.Exception);
                        loginResult.text = "회원가입 실패";
                        return;
                    }
        
                    // Firebase user has been created.
                    Firebase.Auth.FirebaseUser newUser = task.Result;
                    Debug.LogFormat("Firebase user created successfully: {0} ({1})",
                        newUser.DisplayName, newUser.UserId);
        
                    loginResult.text = "회원가입 굿럭";
                });
            }
        }
         

         

        Loing 이라는 게임 오브젝트를 만들고 컴포넌트로 위 스크립트를 추가합니다.

        그 뒤에 UI 들을 연결해줍니다.

         

        Button에 LoginBtnOnClick() 을 연결해 줍니다.

         

        유니티를 실행하고 이메일과 비밀번호를 입력하고 JoinBtn 을 눌러봅니다.

        유니티 콘솔창에 Firebase user created successfully:  () 라는 로그가 찍히면 성공한겁니다.

        다만, 유니티에서 회원가입이 성공해도 실제로는 회원가입이 되지 않습니다. 

        ( 테스트로 진행되는 겁니다. )

         

        실제로 회원 가입이 되는지 확인하려면 빌드해서 모바일로 진행하셔야 합니다.

        모바일에서 회원가입이 완료되면 파이어베이스 콘솔창의 Authentication에 유저가 생성됩니다.

         

         

        기존 사용자 로그인


        회원가입을 만들었으니, 이제는 기존 사용자 로그인을 만들어볼게요.

        Login.cs 파일에 아래 함수를 추가합니다.

          public void LoginBtnOnClick()
            {
                email = inputTextEmail.text;
                password = inputTextPassword.text;
        
                Debug.Log("email: " + email + ", password: " + password);
        
                LoginUser();
            }
        
            void LoginUser()
            {
                auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(task => {
                    if (task.IsCanceled)
                    {
                        Debug.LogError("SignInWithEmailAndPasswordAsync was canceled.");
                        loginResult.text = "로그인 실패";                
                        return;
                    }
                    if (task.IsFaulted)
                    {
                        Debug.LogError("SignInWithEmailAndPasswordAsync encountered an error: " + task.Exception);
                        loginResult.text = "로그인 실패";               
                        return;
                    }
        
                    Firebase.Auth.FirebaseUser newUser = task.Result;
                    Debug.LogFormat("User signed in successfully: {0} ({1})",
                    newUser.DisplayName, newUser.UserId);
        
                });
         

         

        유니티에 LoginBtn 버튼을 UGUI 로 만들어주시구요.

        위의 LoginBtnOnClick함수를 연결해줍니다.

         

        로그인 또는 로그아웃에 따라 유저의 로그인 상태 정보를 가져오는 것에 대해 알아보겠습니다.

        Login.cs 의 아래 코드를 추가합니다.

        FirebaseUser user;
            
            void Awake()
            {
                auth = FirebaseAuth.DefaultInstance;
                auth.StateChanged += AuthStateChanged;
                AuthStateChanged(this, null);
            }
        
        
        
            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.Log("Signed in " + user.UserId);
                        loginResult.text = user.UserId + " 로그인 굿럭";
        
                    }
                }
            }
         

         

        모바일로 빌드 한 뒤에 로그인을 테스트하면 잘 동작합니다.

        PS) user 변수를 통해 유저의 정보를 쓰거나, 읽을 수도 있습니다.

         

        ** 다음 시간에는 구글로그인과 로그인 유저 정보 가져오기에 대해 알아보겠습니다 **

        저작자표시 (새창열림)

        'Unity 자습서 > 유니티 + 파이어베이스' 카테고리의 다른 글

        파이어베이스(firebase) Cloud Functions #1  (2) 2017.11.22
        파이어베이스 유니티 Realtime Database  (7) 2017.11.21
        파이어베이스 유니티로 구글로그인  (10) 2017.11.17
        파이어베이스 유니티 SDK 설치하기  (2) 2017.11.16
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바