실제 존재하는 이메일을 등록하면 등록한 이메일로 인증 메일이 발송된다.
이를 확인함으로써 인증을 처리하는 구조이다.
인증을 거쳐 가입이 완료되면 인증 정보가 파이어베이스에 저장된다. 따라서 로그인할 때는 등록된 이메일 서버와 연동하지 않고 파이어베이스에서 처리한다.
파이어베이스 콘솔에서 빌드 -> Authentification을 클릭한다.
Sign-in method에서 이메일/비밀번호 항목이 사용 설정됨이어야 한다.
build.gradle 파일에 아래의 인증 라이브러리를 등록해야 한다.
implementation 'com.google.firebase:firebase-auth-ktx:21.0.0'
// 파이어베이스 인증 객체 얻기
auth = Firebase.auth
// 회원가입하기
auth.createUserWithEmailAndPassword("email", "password")
.addOnCompleteListener(this) { task ->
// 파이어베이스에 등록된 경우
if (task.isSuccessful) {
auth.currentUser?.sendEmailVerification()
?.addOnCompleteListener { sendTask ->
if (sendTask.isSuccessful) {
// 이메일 인증이 완료 된 경우
} else {
// 그렇지 않은 경우
}
} else {
Log.d(TAG, "onCreate: failure")
}
}
// 로그인 처리
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener (this) { task ->
if (task.isSuccessful) {
// 로그인 성공
} else {
// 로그인 실패
}
}
플레이 서비스 인증 라이브러리 등록은 아래와 같다.
implementation 'com.google.android.gms:play-services-auth:19.2.0'
// 구글 인증 처리
val requestLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult())
{
val task = GoogleSignIn.getSignedInAccountFromIntent(it.data)
try {
val account = task.getResult(ApiException::class.java)!!
val credential = GoogleAuthProvider.getCredential(account.idToken, null)
auth.signInWithCredential(credential)
.addOnCompleteListener (this){
if (task.isSuccessful) {
// 구글 로그인 성공
} else {
// 구글 로그인 실패
}
}
} catch (e: ApiException) {
// 예외 처리
}
}
// 구글 인증 앱 실행
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.default_web_client_id))
.requestEmail()
.build()
// 인텐트 객체 생성
val signInIntent = GoogleSignIn.getClient(this, gso).signInIntent
requestLauncher.launch(signInIntent)