[Unity] 파이어베이스 데이터베이스 연동 - 회원가입, 로그인 만들기

김민석·2021년 5월 26일
1

Unity

목록 보기
2/3

파이어베이스에서는 유니티에 여러 기능들을 제공해 주는데 그 중 회원가입과 관련된 기능을 활용할 것이다.

1. 유니티 프로젝트 생성


우선 유니티 프로젝트 하나 생성해 준다.

2. 파이어베이스 SDK 설치

https://firebase.google.com/docs/unity/setup
위 홈페이지에 접속한다.

그리고 나서 SDK를 설치해준다.


설치가 완료된 모습이다. dotnet 폴더가 두개 존재하는 것을 볼 수 있는데, Unity 버전에 따라 2017.x 이상 버전은 dotnet4를 이전 버전은 dotnet3을 사용하면 된다.


dotnet4 폴더에 들어가서 Auth 파일 클릭해서 import 해 준다.
계정 인증용 파이어 베이스를 사용할 것이기 때문이다.

3. 유니티 프로젝트 설정

VR 프로젝트를 만들 것이기 때문에 안드로이드로 모드를 변경해 줘야 한다.



File -> Build Settings에 들어가서 Android를 선택 후 Switch Platform을 눌러준다.

4. 파이어베이스 프로젝트 생성 및 유니티 연동

https://console.firebase.google.com
위의 파이어베이스 홈페이지에 접속한다. 그리고 나서 프로젝트를 하나 생성해 준다.

프로젝트 생성 시 유니티에서 활용할 것이기 때문에 유니티를 눌러준다.

그리고 나서 안드로이드를 활용할 것이기 때문에 안드로이드에 체크하여 준다.

앱 등록을 마쳤다면 json 파일을 다운받는다.

그리고 나서 asset에 다운받은 json 파일을 추가해 준다.

sdk 추가는 일단 건너뛴다.

생성을 마쳤다면 프로젝트가 추가된 것을 확인한다.

File -> Build settings -> Player Settings 에 들어가서 앞서 안드로이드 앱 등록할 때 사용했던 Package Name을 똑같이 넣어 준다.

4.1. 파이어베이스 계정인증 기능 사용하기


계정 인증용을 만들 것이기 때문에 Authentication에서 Sign-in method를 선택해 준다.

이메일과 비밀번호를 모두 사용할 것이기 때문에 위에 있는것만 체크해 주면 된다.

설정을 해 준뒤 프로젝트 설정에 다시 들어가서 json 파일을 다시 다운받고 asset에 추가해 준다. 이 때 이미 존재하던 json 파일은 제거해 줘야 한다.(이름이 겹치기 때문)

5. 회원가입 화면 만들기


우선 Scene 부분에 Canvas를 하나 만들어 준다. 이 캔버스 안에 이메일 입력 부분, 비밀번호 입력 부분, 회원가입 버튼, 로그인 버튼을 생성해 줄 것이다.


캔버스 안에 그림과 같이 입력 칸과 버튼을 생성해 준다.
이메일과 비밀번호 입력 칸은 Input Field로, 버튼들은 Button으로 생성해 준다.
그리고 초기 위치들은 겹칠 수 있기 때문에 잘 조절해 준다.


그림과 같이 Input Field의 Placeholder에서 Text값을 입력해 주면 Input Field의 기본 출력 메세지를 설정할 수 있다.
버튼의 경우는 Text 부분을 수정해 주면 된다.


그리고 나서 Assets에 스크립트를 하나 생성해 준다.
스크립트 내용은 아래와 같다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Firebase.Auth;
using UnityEngine.UI;

public class AuthManager : MonoBehaviour
{ 

    [SerializeField] InputField emailField;
    [SerializeField] InputField passField;

    // 인증을 관리할 객체
    Firebase.Auth.FirebaseAuth auth;

    void Awake()
    { 
        // 객체 초기화
        auth = Firebase.Auth.FirebaseAuth.DefaultInstance;
    }
    public void login()
    {
        // 제공되는 함수 : 이메일과 비밀번호로 로그인 시켜 줌
        auth.SignInWithEmailAndPasswordAsync(emailField.text, passField.text).ContinueWith(
            task => {
                if (task.IsCompleted && !task.IsFaulted && !task.IsCanceled)
                {
                    Debug.Log(emailField.text + " 로 로그인 하셨습니다.");
                }
                else
                {
                    Debug.Log("로그인에 실패하셨습니다.");
                }
            }
        );
    }
    public void register() {
        // 제공되는 함수 : 이메일과 비밀번호로 회원가입 시켜 줌
        auth.CreateUserWithEmailAndPasswordAsync(emailField.text, passField.text).ContinueWith(
            task => {
                if (!task.IsCanceled && !task.IsFaulted)
                {
                    Debug.Log(emailField.text + "로 회원가입\n");
                }
                else
                    Debug.Log("회원가입 실패\n");
            }
            );
    }
}

위와 같이 파이어베이스에서 제공해 주는 함수들을 사용하여 로그인과 회원가입 함수를 만들어 준다.


그리고 나서 빈 객체를 하나 만들어 준다. AuthManager로 이름을 지어 주었다.


그리고 작성한 스크립트를 빈 객체에 끌어다 넣어 준다.


Email Field와 Pass Field에 생성한 Input Field 값들을 매칭시켜 준다.


그리고 나서 버튼을 눌렀을때의 동작을 해 주기 위해 On Click() 을 설정해 줘야 한다.
우선 버튼의 Inspector에서 On Click()의 + 버튼을 눌러 버튼 눌렀을 때의 동작을 추가 해 준다.
그리고 나서 생성한 AuthManager를 드래그 해서 끌어다 넣어 준다.
마지막으로 스크립트의 함수 중 어떤 함수를 써야할 지 선택해 준다. 위의 사진은 Login 버튼에 해당하므로 스크립트에서 만들었던 login 함수를 매핑시켜 준다.
Register 버튼의 경우 똑같은 방법으로 진행하되 register 함수를 매핑시켜 주면 된다.

6. 동작 확인


그림과 같이 test1@naver.com으로 회원가입을 하였다.


파이어베이스 데이터베이스의 User를 보면 회원가입한 이메일이 추가되어 있는 것을 확인할 수 있다.


만약 그림과 같이 데이터베이스에 존재하지 않는 아이디를 입력하여 로그인을 시도하면 실패하였다고 메세지가 출력되는 것을 확인할 수 있다.

이렇게 생성된 데이터를 활용하면 된다.

주의할 점은 비밀번호가 너무 짧거나 이메일 형식이 올바르지 않다면 회원가입이 실패하게 된다.

7. 추가


PassFiled의 Content Type을 Password로 해 주면 입력할 때 가려져서 표현된다.
즉 * 기호를 사용하여 찍히게 된다.

8. 참고

https://inyongs.tistory.com/27
https://wergia.tistory.com/51

profile
김민석의 학습 정리 블로그

0개의 댓글