728x90
object AuthRepository {
suspend fun signIn(email: String, password: String): Result<Unit> {
return try {
Firebase.auth.signInWithEmailAndPassword(email, password).await()
Result.success(Unit)
} catch (e: Exception) {
e.printStackTrace()
Result.failure(e)
}
}
}
이번에는 AuthRepository 코드에서 설명하고자 한다.
Firebase를 기반으로 로그인, 로그아웃, 회원가입 기능을 만들었기에 Firebase 인증(Authentication)과 관련된 기능을 처리하는 AuthRepository라는 싱글톤 객체를 정의하고 있다. 이 객체에서 기능은 사용자의 이메일과 비밀번호를 사용하여 로그인을 수행하는 기능을 제공하고 있다. (로그아웃과 회원가입은 추후 가능하다면 기능을 작성하겠다.)
여기서 중요한 점은 suspend 키워드이다. 이는 코루틴(coroutine)을 지원하는 함수임을 나타내는데, Kotlin에서는 비동기 작업을 처리하기 위해 코루틴을 사용하고 있다. 따라서 signIn 함수는 비동기적으로 동작하며, 결과 타입으로 Result<Unit>을 반환한다.
Result는 Kotlin 표준 라이브러리에서 제공하는 클래스로, 연산의 성공 또는 실패를 나타내기 위해 사용됩니다. Unit은 성공적으로 수행된 연산에서 반환할 값이 없음을 의미한다.
- signIn 함수는 사용자의 이메일과 비밀번호를 인자로 받는다.
- Firebase.auth.signInWithEmailAndPassword(email, password).await()를 호출하여 Firebase 인증을 통해 로그인을 시도하며, await()는 코루틴에서 비동기 작업이 완료될 때까지 대기하는 함수이다.
- 로그인이 성공하면 Result.success(Unit)를 반환하여 성공을 나타낸다.
- 만약 로그인이 실패하면 catch 블록이 실행되어 예외 정보를 출력하고, Result.failure(e)를 반환하여 실패를 나타낸다.
728x90
'Android > Study' 카테고리의 다른 글
[Android] 포스팅 업로드 구현 (2) - ViewModel (0) | 2024.02.26 |
---|---|
[Android] 포스팅 업로드 구현 (1) - Activity (0) | 2024.02.26 |
[Android] 로그인 기능 구현 (3) - ViewModel (0) | 2024.01.21 |
[Android] ktlint, detekt를 적용해보기 (0) | 2024.01.20 |
[Android] android에서 multipart로 image 전송 및 받아오기 (0) | 2024.01.14 |