[kotlin] 아키텍처 컴포넌트를 이용한 로그인 및 소셜 로그인 구현

소개

이번 포스트에서는 Kotlin과 Android의 아키텍처 컴포넌트를 사용하여 사용자 로그인 및 소셜 로그인을 구현하는 방법에 대해 다룹니다.

로그인 구현

먼저, Firebase를 사용하여 이메일 및 비밀번호를 이용한 로그인을 구현합니다.

// Firebase 인증 객체 생성
val mAuth = FirebaseAuth.getInstance()

// 로그인 함수
fun login(email: String, password: String) {
    mAuth.signInWithEmailAndPassword(email, password)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                // 로그인 성공 처리
            } else {
                // 로그인 실패 처리
            }
        }
}

소셜 로그인 구현

이어서, Google 로그인을 예시로 소셜 로그인을 구현합니다.

// Google 로그인 클라이언트 생성
val gso = GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
    .requestIdToken(getString(R.string.default_web_client_id))
    .requestEmail()
    .build()
val mGoogleSignInClient = GoogleSignIn.getClient(this, gso)

// 소셜 로그인 함수
fun googleLogin() {
    val signInIntent = mGoogleSignInClient.signInIntent
    startActivityForResult(signInIntent, RC_SIGN_IN)
}

// 소셜 로그인 결과 처리
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)

    if (requestCode == RC_SIGN_IN) {
        val task = GoogleSignIn.getSignedInAccountFromIntent(data)
        handleSignInResult(task)
    }
}

fun handleSignInResult(completedTask: Task<GoogleSignInAccount>) {
    try {
        val account = completedTask.getResult(ApiException::class.java)
        // 소셜 로그인 성공 처리
    } catch (e: ApiException) {
        // 소셜 로그인 실패 처리
    }
}

결론

이렇게 Android 앱에서 아키텍처 컴포넌트를 활용하여 사용자 인증을 구현할 수 있습니다. Firebase를 이용한 기본 로그인과 소셜 로그인 구현을 통해 사용자가 편리하고 안전하게 앱에 로그인할 수 있는 환경을 제공할 수 있습니다.

참고 문헌: