본문 바로가기
게임/Unity

[Unity 이론] Firebase Auth 회원가입 및 로그인

by 신인용 2019. 12. 8.
반응형

Firebase Auth 회원가입 및 로그인

 

 

 

 만약 게임에서 계정이 없어 게임종료 후 데이터가 날라가면 할 맛이 뚝 떨어질 것입니다. 나만의 계정을 만들어 게임점수를 쌓아가야 할 맛이 날 것입니다.

 

 오늘은 Firebase Authentication 시스템을 이용한 회원가입 및 로그인을 구현하겠습니다.

 

 

 

 

0. 기본셋팅

 우선, "Firebase Database 연동" 글에서 다운로드 받았던 Firebase Unity SDK가 있어야 합니다.

 

 

 다운로드 받았던 폴더를 열고 FirebaseAuth Package를 Unity로 Import해줍니다.

 

 

 

 그리고 Firebase에서 Authentication탭에 들어갑니다.

 

 사용자가 어떤 방식으로 로그인을 설정할 지 정하기 위해 "로그인 방법 설정"에 들어갑니다. 또는 위쪽에 "로그인 방법"을 통해 들어갈 수 있습니다.

 

 

 

 다음과 같은 화면이 뜰 것인데, 저는 이메일/비밀번호를 이용하겠습니다.

 

 

 

 이메일/비밀번호를 사용한다고 체크해주고 저장을 해줍니다.

 

 

 

 이제 이메일/비밀번호가 사용 설정되었습니다.

 

 

 

 그렇다면 변경된 사항은 어디에 저장되었고, 어떻게 유니티에 적용시킬까요??

바로 google-services.json파일에 저장됩니다. 이 파일을 유니티에 삽입해주면 변경사항을 적용할 수 있습니다.

 

 

 

설정 - 프로젝트 설정 에 들어가서

 

 

 

 google-services.json을 다운받아줍니다.

 

 

 

 

  Unity에서 Assets - Plugins - Android - Firebase 에 삽입합니다.

(주의) google-services (2)  <- 이와 같이 이름 끝에 번호가 붙지 않게 주의합니다.

 

 

 이렇게 기본 셋팅은 완료되었습니다.

회원가입과 로그인 구현은 바로 코드를 보면서 공부하겠습니다.

 

 

 

1. 회원가입

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase.Auth; // 계정인증기능 사용
 
public class JoinBehaviour : MonoBehaviour{
    private FirebaseAuth auth; // 인증 객체 불러오기
    void Start(){
        auth = FirebaseAuth.DefaultInstance; // 인증 객체 초기화
        Join("inyongs@daum.net""555555"); // 해당 이메일,비밀번호로 가입하기
    }
 
    void Join(string email, string password){
        // 이메일과 비밀번호로 가입하는 함수
       auth.CreateUserWithEmailAndPasswordAsync(email, password).ContinueWith(
            task => {
                if (!task.IsCanceled && !task.IsFaulted){
                    Debug.Log(email + " 로 회원가입 하셨습니다.");
                }
                else{
                    Debug.Log("회원가입에 실패하셨습니다.");
                }
            }
        );
    }
}
 
cs

+코드+

auth.CreateUserWithEmailAndPasswordAsync(email, password)

- Firebase와 연동하여 회원가입을 진행하는 코드입니다.

- 비동기적으로 실행하여 회원가입이 오래걸려도 게임에 큰 지장이 없게 합니다.

ContinueWith( task => { ... } )

- 회원가입을 진행 후, task로 진행되는 함수입니다. 여기선, 회원가입의 결과를 task에서 검사할 수 있습니다.

 

 

 

 

 다음과 같이 회원가입에 성공했다는 메세지가 나옵니다.

 

 

 Firebase에도 계정이 등록되었습니다.

 

 

 

 

 - 이메일 중복,

 - 이메일 형식 불량,

 - 비밀번호 6자리 미만

 - 기타 등등...

일 경우에는 회원가입에 실패하게 됩니다.

 

 

 

 

 

 

2. 로그인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase.Auth;
 
public class LoginBehaviour : MonoBehaviour{
    private FirebaseAuth auth;
 
    void Start(){
        auth = FirebaseAuth.DefaultInstance;
        Login("inyongs@daum.net""555555");
    }
 
    void Login(string email, string password){
// 이메일과 비밀번호로 가입하는 함수
        auth.SignInWithEmailAndPasswordAsync(email, password).ContinueWith(
            task => {
                if(task.IsCompleted && !task.IsFaulted && !task.IsCanceled){
                    Debug.Log(email + " 로 로그인 하셨습니다.");
                }
                else{
                    Debug.Log("로그인에 실패하셨습니다.");
                }
            }
        );
    }
}
 
cs

+코드+

 auth.SignInWithEmailAndPasswordAsync(email, password)

- Firebase와 연동하여 로그인을 진행하는 코드입니다.

- 비동기적으로 실행하여 로그인이 오래걸려도 게임에 큰 지장이 없게 합니다.

 

 

 

 다음과 같이 로그인에 성공했습니다.

이제 로그인 한 사용자의 로그인정보(auth)를 저장해두고 사용하면 로그인 한 사용자의 데이터를 불러올 수 있습니다.

 

 

 

3. 참고

(참고)

 회원가입이나, 로그인을 구현하면서 자바 관련 오류가 발생할 경우,

 Edit - Preferences - External Tools에서 JDK가 올바르게 설치되어 있는지 확인합니다.

(저는 자바 OpenJDK 11, 유니티 2019.2.14 버전 사용중입니다.)

반응형

댓글