구글 애드몹(Admob)이나 구글에서 제공하는 서비스와 API를 이용하여 프로그래밍을 하기 위해서는 구글에 개발자 등록을 해야한다. 구글에 개발자 등록을 하기 위해서는 우선 구글 플레이 콘솔(Google Play Console)에 접속해야 한다.
구글 플레이 콘솔에 접속하기 위해서는 구글 검색창에서 구글 플레이 콘솔이라고 검색한 뒤 최상단 홈페이지에 접속하면 된다.
개발자 콘솔에 접속했다면 개발자 등록을 하고자하는 구글 계정으로 로그인을 한다.
구글의 개발자 등록은 위의 그림과 같은 순서로 이루어진다. 로그인 한 이후에는 개발자 계약을 수락해야 하는데, 개발자의 실수로 인해서 개발자 등록이 해지된다거나 구글의 API를 사용하거나 서비스를 이용하여 게시된 상품의 게시가 중지되는 문제가 발생할 수도 있기 때문에 계약서를 꼼꼼히 읽고 주의를 하는 것이 좋다.
계약을 수락하면 개발자 등록 수수료를 결제해야 하는데 25달러가 든다. 어떤 개발자 등록처럼 연회비 개념으로 내야하는 것이 아니라 등록할 때 최초 1회만 결제하면 되기 때문에 개발자 등록을 함으로서 얻을 이익에 비하면 부담이 적은 편이다.
구글은 별도의 공인인증서나 키보드 보안 프로그램을 강제하기 않기 때문에, 격렬한 발암 없이도 간단하게 수수료 결제를 끝낼 수 있다.
마지막으로 세부정보를 간단하게 입력하고 등록 완료를 누르면 구글 개발자 등록을 마치게 된다.
이제부터 구글에서 제공하는 개발자용 API와 서비스를 이용할 수 있고 구글 플레이 스토어를 통해 앱을 출시할 수도 있게 되었다.
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.
네트워크 게임을 제작할 때, 중요한 부분 중의 하나가 회원가입, 로그인, 로그아웃 등의 기능을 제공하는 것이다. 이 인증 기능들을 제공하고 관리하는 것을 직접 구현하기 위해서는 해야할 일이 많다. 회원들의 목록과 정보를 관리하는 데이터베이스도 만들어야 하고 서버에 유저들이 회원가입이 로그인을 위해서 입력한 정보를 보내고 그 결과를 돌려주는 기능들 역시 직접 구현해야만 한다. 하지만 구글의 파이어베이스에서는 사용자들이 필요로 하는 기능들을 이미 제공하고 있다.
지난 섹션에서 우리는 파이어베이스에서 테스트 프로젝트를 생성하고 유니티와 연결하는 작업을 진행했다. 이번 섹션의 예시는 지난 섹션 이후에서 부터 시작하도록 하겠다.
파이어베이스 시작하기로 제일 첫 화면으로 들어가면 지난 섹션에서 만든 테스트 프로젝트가 보일 것이다. 그 프로젝트를 선택하면 해당 프로젝트의 설정가능한 기능들의 목록을 볼 수 있다.
이 중에서 우리가 사용할 기능을 Authentication(인증)이다. 이 기능을 이용하면 별도의 회원정보를 위한 데이터베이스 구축이나 기능 구현없이 회원가입, 로그인, 로그아웃 등의 기능을 만들 수 있다. 이 authentication 메뉴를 선택해서 들어가보면 다음과 같은 화면을 볼 수 있다.
사용자 탭에서는 현재 제공하는 프로젝트에 가입된 사용자들의 목록을 보여주는데 현재는 가입된 유저가 없기 때문에 아무런 사용자도 나오지 않는다.
그 옆의 로그인 방법 탭에서는 로그인에 사용할 방법들을 설정할 수 있다. 단순하게 이메일과 비밀번호를 이용해서 로그인 하는 방법도 제공하지만 구글 아이디나 페이스북, 트위터등의 아이디를 통해서도 가입이 가능하도록 기능을 제공하고 있다. 현재는 프로젝트가 처음으로 만들어졌기 때문에 모든 로그인 방법에 대해서 "중지됨"이라고 표시되어 있다. 이번 섹션의 예제에서는 이메일을 통한 로그인 방법을 사용해보겠다.
이메일/비밀번호 항목을 선택해서 사용설정을 켜주고 저장한다. 다만 이 부분에서 주의할 점이 하나 있다. 파이어베이스 프로젝트에서 기능 옵션을 변경하였다면 google-services.json 파일의 내용이 유니티 프로젝트에 넣어줬던 파일과 다르게 변경되기 때문에 새롭게 다운받아서 넣어주어야 한다는 것이다. 그렇게 하지 않는다면 기존의 google-services.json 파일을 사용하고 있는 프로젝트는 변경된 파이어베이스 서버에 제대로 접속할 수 없게 된다.
파이어베이스 프로젝트의 기능 옵션을 변경해서 google-services.json 파일을 새로 다운로드 받아야 한다면 다음의 경로를 따르면 된다.
그 다음의 작업은 유니티 프로젝트에서 이루어질 것이다. 이전 섹션에서 걸어줬던 작업에 필요한 파이어베이스 유니티 SDK를 다운로드 받을 수 있는 링크를 다시 걸겠다.
다운로드 받은 SDK의 압축을 풀어보면 필요한 SDK들이 기능별로 유니티 패키지로 묶어있는 것을 볼 수 있다. 우리는 이 중에서 FirebaseAuth.unitypackage를 유니티 프로젝트에 임포트해야 한다.
유니티 에디터의 프로젝트 뷰에서 우클릭한 이후에 Import Package > Custom Package를 선택한다.
아까 받은 SDK 중에서 FirebaseAuth.unitypackage를 임포트한다.
필요한 SDK를 임포트하고 나면 프로젝트 창이 다음처럼 될 것이다.
이렇게 되면 파이어베이스의 인증 기능을 사용하기 위한 준비가 모두 끝난 것이다.
1. 회원가입기능 만들기
우선은 이메일과 비밀번호를 이용한 회원가입 기능을 제작해보겠다. 다음과 같이 UGUI를 이용해서 화면을 구성해보자.
이메일과 비밀번호를 입력할 수 있는 InputField와 회원가입, 로그인을 할 수 있는 버튼과 마지막에 결과를 알려줄 텍스트를 만들었다. 다음 과정은 인증 과정을 관리할 오브젝트를 만드는 것이다. 씬에 AuthObject를 만들고 그 오브젝트에 FirebaseManager라는 스크립트를 만들어서 붙여준다.
FirebaseManager의 코드 내용은 다음과 같다 :
using UnityEngine; using UnityEngine.UI;
public class FirebaseManager : MonoBehaviour { // 이메일 InputField [SerializeField] InputField emailInput; // 비밀번호 InputField [SerializeField] InputField passInput; // 결과를 알려줄 텍스트 [SerializeField] Text resultText;
// 인증을 관리할 객체 Firebase.Auth.FirebaseAuth auth;
// Use this for initialization void Awake () { // 인증을 관리할 객체를 초기화 한다. auth = Firebase.Auth.FirebaseAuth.DefaultInstance; }
// 회원가입 버튼을 눌렀을 때 작동할 함수 public void SignUp() { // 회원가입 버튼은 인풋 필드가 비어있지 않을 때 작동한다. if(emailInput.text.Length != 0 && passInput.text.Length != 0) { auth.CreateUserWithEmailAndPasswordAsync(emailInput.text, passInput.text).ContinueWith( task => { if(!task.IsCanceled && !task.IsFaulted) { resultText.text = "회원가입 성공"; } else { resultText.text = "회원가입 실패"; } }); } }
// 로그인 버튼을 눌렀을 때 작동할 함수 public void SignIn() { // 로그인 버튼은 인풋 필드가 비어있지 않을 때 작동한다. if (emailInput.text.Length != 0 && passInput.text.Length != 0) { auth.SignInWithEmailAndPasswordAsync(emailInput.text, passInput.text).ContinueWith( task => { if (task.IsCompleted && !task.IsCanceled && !task.IsFaulted) { Firebase.Auth.FirebaseUser newUser = task.Result; resultText.text = "로그인 성공"; } else { resultText.text = "로그인 실패"; } }); } } }
코드의 작성을 마쳤다면 유니티 에디터의 오브젝트에 필요한 오브젝트를 넣어주어야 한다. FirebaseManager에는 각 Input Field와 결과 텍스트를 넣어주고 회원가입 버튼과 로그인 버튼의 OnClick 이벤트에 AuthObject를 끼워넣고 각자 호출해야하는 함수를 설정해주어야 한다.
이상으로 유니티에서 인증 기능에 필요한 모든 것을 만들었다.
하지만 여기서 테스트할 때 주의해야 할 점은 유니티 에디터 상에서 테스트하는 경우에는 모든 통신의 결과가 성공했다고 가정했다고 진행되기 때문에 제대로된 성공이나 실패 여부를 알고자 한다면 안드로이드로 빌드하여 모바일 상에서 테스트하는 것이 좋다. 또한 유니티 에디터 상에서 테스트된 것은 파이어베이스에 등록되지 않기 때문에 여기서 회원가입에 성공했다고 하더라도 Authentication의 사용자 목록에서는 나오지 않을 것이다. 또한 주의할 점은 만약 제대로된 이메일 주소가 아니거나 비밀번호의 길이가 너무 짧다면 회원가입에 실패할 수도 있다.
모바일 상에서 테스트하여 성공적으로 회원가입이 된다면 Authentication의 사용자 목록에 다음과 같이 출력될 것이다.
로그인에 성공한 유저를 로그아웃 시키고자 한다면 다음의 코드를 활용하면 된다.
auth.SignOut();
[유니티 어필리에이트 프로그램]
아래의 링크를 통해 에셋을 구매하시거나 유니티를 구독하시면 수익의 일부가 베르에게 수수료로 지급되어 채널의 운영에 도움이 됩니다.