[TIL] Firebase시리즈 - 1. Auth(기본 사용법)

박봉팔·2024년 2월 27일
0
post-thumbnail

Firebase

Firebase는 구글에서 제공하는 개발 플랫폼으로 Firebase를 통해 원격의 데이터베이스나 사용자 인증, 원격 스토리지 등을 사용하는게 가능하다.

마지막 프로젝트를 진행하며 앱을 배포해서 실제 유저의 테스트를 거쳐야했기 때문에 Firebase를 사용해야했고, Firebase를 사용하며 알게된 간단한 사용법을 알아보자.

프로젝트 생성

가장 먼저 Firebase를 사용하려면 Firebase홈페이지 내에서 새로운 프로젝트를 생성해 주어야 한다.

프로젝트를 생성하고 나면 현재 개발중인 앱에 Firebase를 추가하여 해당 프로젝트와 Firebase를 연동해준다.

프로젝트와 연동하는 과정이 조금 복잡한데 안드로이드 기준으로 설명해보자면, 우선 Firebase초기 화면에서 안드로이드 아이콘을 클릭해 앱을 연동한다.

앱을 등록하는 방법은 총 4단계로 나뉘는데, 먼저 패키지 이름을 입력해주고 원한다면 앱의 닉네임과 SHA-1키를 입력해준다.

정보를 입력하고 나면 구글 서비스를 위한 json파일을 다운받을 수 있다. 다운받은 파일은 프로젝트의 최상단 디렉토리에 넣어준다.

세팅한 json파일에 액세스 할 수 있게 하기위해 Project수준의 GradleModule단위의 Gradle파일에 각각 PluginDependency를 추가해준다.

이렇게 하고나면 해당 앱과 Firebase가 연동되며 각 기능별로 Dependency를 추가해 손쉽게 사용이 가능하다.


Auth (Authentication)

Authentication(이하 Auth)는 제공하는 메서드를 통해 사용자의 EmailPassword를 제공받아 사용자를 등록한다.

이렇게 사용자가 등록되면 사용자의 정보가 Firebase에 업로드 되며 해당 정보를 사용해 로그인이나 사용자인증에 대한 로직을 수행할 수 있게된다.

Auth를 사용하려면 우선적으로 AuthDependencyGradle파일에 추가해준다.

dependencies {
	...
    implementation("com.google.firebase:firebase-auth-ktx")
}

그 후 Firebase에서 Authentication메뉴에서 생성을 통해 Auth기능을 활성화해준다.

로그인 방법은 여러가지를 설정하는게 가능한데 우선 가장 간단한 이메일/비밀번호 로그인 방법을 선택해서 알아보았다.

이메일을 사용해 로그인 방법을 설정할경우 다시 2가지의 선택지가 나뉘게 되는데 이메일비밀번호를 전달받아 로그인하는 방법과 이메일로 링크를 보내 확인해서 로그인 하는 방법이있다.


객체 생성 후 메서드 사용하기

Auth를 사용하려면 우선 Auth객체를 생성해야한다. 그 후 다양한 메서드를 사용해 회원가입, 로그인, 로그아웃, 회원탈퇴 같은 기능들을 구현할 수 있다.

val auth = Firebase.auth

유저정보 등록

이메일과 비밀번호를 입력해 유저의 로그인 정보를 생성해주는 메서드로 실행후 콜백메서드를 추가해 등록 성공과 실패시 원하는 로직을 실행시킬 수 있다.

기본적으로 이메일 타입이 아닌 id형식에 대해서는 등록이 실패된다.

auth.createUserWithEmailAndPassword(email, pw)
	.addOnCompleteListener { task ->  //기본적으로 task를 전달함
    	if(task.isSuccessful) {
        	//성공시 실행할 코드
        }
    }

위와 같이 완료된 task 전체에 대한 설정도 가능하며 성공과 실패 콜백을 각각 설정도 가능하다.
(기본적으로 Firebase의 기능들에서는 모두 같은 콜백 메서드가 제공된다.)

auth.createUserWithEmailAndPassword(email, pw)
	.addOnSuccessListener { //성공시 }
    .addOnFailureListener { //실패시 }

로그인

유저정보 등록과 마찬가지로 이메일과 비밀번호를 전달받아 해당 유저의 정보를 찾고, 입력된 값이 일치하는지 비교한다.

정보 등록과 마찬가지로 콜백 메서드를 사용해 원하는 로직을 실행시킬 수 있으며, 등록되지 않은 정보나 잘못된 입력일 경우 실패처리된다.

실패할 경우 exeption이 다르기떄문에 실패시 로직을 다르게 커스텀 할 수도 있을 듯 하다.
(여기까지는 해볼 시간이 없었...다..)

auth.signInWithEmailAndPassword(email, pw)
	.addOnCompleteListener { ... }

그 외

우선 사용자가 로그인을 한 경우에는 따로 로그인된 세션을 만료시키지 않는 한 앱이 종료되어도 계속 로그인 된 상태로 존재하게 된다.

따라서 사용자의 로그인 정보를 앱이 종료될 경우 유지되지 않게 하고 싶다면 로그아웃을 통해 로그인을 종료해줘야한다.


로그아웃

유저등록과 로그인의 경우도 간단했지만, 로그아웃의 경우에는 훨씬 간단하게 구현이 가능하다.
signOut()메서드를 입력하면 바로 로그아웃이 실행된다.


회원탈퇴

회원 탈퇴의 경우에는 현재 회원에 대한 정보를 받아온뒤 삭제하는 과정을 거쳐야 하기때문에 currentUser로 현재 유저의 정보를 불러온 뒤 .delete메서드로 삭제한다.

	auth.signOut() // 로그아웃 메서드
    auth.currentUser?.delete() // 회원탈퇴 메서드: 회원정보가 없을 수 있기때문에 ?.(세이프콜)로 실행

오늘은 어땠나요?

주....죽어요...

profile
개발 첫걸음! 가보자구!

0개의 댓글