build.gradle(Module) 파일의 dependencies 부분에 com.google.firebase.firebase-auth
라이브러리 추가.
파이어베이스 authentication 공식 문서를 참고하면 더 많은 내용을 확인할 수 있습니다.
회원가입을 하기 위해서는 createUserWithEmailAndPassword
메서드를 사용하면 됨. 아래 코드는 회원가입을 위해 signUp이란 함수를 생성했음.
fun signUp() {
var email: String = emailEditText.text.toString()
var password: String = passwordEditText.text.toString()
auth!!.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this@LoginActivity) { task ->
if (task.isSuccessful) {
//로그인 성공
Toast.makeText(
this@LoginActivity,
getString(R.string.signin_complete), Toast.LENGTH_SHORT
).show()
startActivity(Intent(this@LoginActivity, MainActivity::class.java))
} else if (task.exception!!.toString()
.contains("FirebaseAuthWeakPasswordException")
) {
//회원가입 시 비밀번호가 6자리 이상으로 입력하지 않은 경우
Toast.makeText(
this@LoginActivity, "비밀번호는 6자리 이상이어야 합니다.",
Toast.LENGTH_SHORT
).show()
} else if (task.exception!!.toString()
.contains("FirebaseAuthUserCollisionException")
) {
//이미 존재하는 사용자 -> 로그인 함수 호출.
emailSignIn()
} else {
println(task.exception.toString())
Toast.makeText(
this@LoginActivity, task.exception.toString(),
Toast.LENGTH_SHORT
).show()
}
}
}
try-catch 문을 사용해서 예외처리로 비밀번호가 6자리 미만일 경우에 Toast 메세지를 띄우는 동작과 이미 존재하는 계정은 로그인 함수를 호출하는 방식으로 사용하고 싶었는데 여기서는 해당 exception을 오류로 띄우지 않는 것 같다. (혹시 이 부분을 try-catch문으로 작성하신 분 계시면 댓글 부탁드립니다.)
로그인 시에는 signInWithEmailAndPassword
이란 메서드를 사용한다. 로그인을 위해 emailSignIn이란 함수를 생성했다.
fun emailSignIn() {
var email: String = emailEditText.text.toString()
var password: String = passwordEditText.text.toString()
auth!!.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
//로그인 성공
Toast.makeText(
this@LoginActivity,
getString(R.string.signin_complete),
Toast.LENGTH_SHORT
).show()
startActivity(Intent(this@LoginActivity, MainActivity::class.java))
} else {
//로그인 실패
Toast.makeText(
this@LoginActivity,
getString(R.string.signout_fail_null),
Toast.LENGTH_SHORT
).show()
}
}
}
그리고 authentication으로 이메일을 이용해 가입하고 싶을 경우
빨간줄로 표시한 부분으로 들어가 활성화 시켜주어야 한다.