파이어베이스 authentication - 이메일 로그인

KEH·2021년 7월 14일
0
post-thumbnail

파이어베이스 authentication을 사용하기 위해 필요한 라이브러리


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으로 이메일을 이용해 가입하고 싶을 경우

빨간줄로 표시한 부분으로 들어가 활성화 시켜주어야 한다.

profile
개발을 즐기고 잘하고 싶은 안드로이드 개발자입니다 :P

0개의 댓글