[TIL] Firebade Auth 자동로그인 (with. nav_compnent)

박봉팔·2024년 3월 4일
0

Auth.currentUser()

프로젝트의 자동 로그인 기능을 어떤 방식으로 구현해야할지 고민하며 여러가지 방법을 시도하던 중 앱이 종료된 후 다시 실행되었을때에도 Auth에 로그인 되어있던 유저의 정보가 남아있는 것을 확인했다.

그래서 Firebase 공식 문서를 뒤져본 결과, 한 번 로그인 한 유저의 정보는 로컬에 캐싱되어 로그아웃을 하기 전까지는 삭제되지 않고 유지된다는 것을 알게되었다.


Start Destination 변경

사용자가 로그인 했을 경우를 감지할 수 있는 데이터가 있으니 이제 이에 맞춰 앱 시작화면만 변경해주면 자동 로그인 기능을 구현할 수 있다.

우선 앱이 시작함과 동시에 AuthRepository에서 currentUser의 정보를 불러온 뒤 해당 정보가 없을 경우에는 startDestination을 로그인 화면으로, 정보가 있을 경우에는 홈화면으로 변경하도록해 자동 로그인을 구현했다.

    private fun setStartDestination() {
        lifecycleScope.launch {
            val currentUser = authRepo.getCurrentUserUid()

            if (currentUser.isNotEmpty()) {
                navGraph.setStartDestination(R.id.frag_home)
                navController.graph = navGraph
                return@launch
            }
            navGraph.setStartDestination(R.id.frag_login)
            navController.graph = navGraph
        }
    }

회원 가입의 경우

하지만 회원가입을 해서 로그인을 할 경우에는 따로 시작화면을 변경해 주는 코드가 없었기 때문에
앱을 다시 실행할 경우 로그인 화면으로 접속되는 경우가 발생했다.

그래서 회원가입이 완료되고 프로필 설정이 나오기전에 startDestination을 변경해주는 방법으로 자동 로그인 기능을 완성했다.

    private fun navigateToOnBoarding() {
        val navGraph = navController.navInflater.inflate(R.navigation.nav_graph)

        exitTransition = TransitionInflater.from(requireContext()).inflateTransition(android.R.transition.fade)
        // 온보딩 화면으로 전환
        navController.navigate(R.id.action_frag_sign_up_to_frag_on_boarding)
        // 시작 화면을 home으로 전환
        navGraph.setStartDestination(R.id.frag_home)
        navController.graph = navGraph
    }

오늘은 어땠나요?

최종 프로젝트가 끝나면....

잠을 잘 수 있어....

profile
개발 첫걸음! 가보자구!

0개의 댓글