SHcommit / LearnMoreSwiftInUdemy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Clone/Instagram] 로그인 기능 구현 | 복습 & 새롭게 알게된 개념 #6

SHcommit opened this issue · comments

Login, Logout기능 구현

구현 영상

강의와는 다르게

  • 회원가입 진행완료시에 파베에 업로드하는 과정이 시간이 걸리고 로그인 시에도 대기시간이 있어서 간단하게 인디케이터로 과정을 표시했다.

  • 회원가입을 해도 로그인을 직접 해야만 인스타그램 계정이 활성화 되도록 했다.

  • 매인 홈 뷰(first vc == Feed Scene)에서 파이어베이스의 최근 유저 auth가 없을 경우에 로그인 화면으로 presnt 되는데 이 과정에서 이미 만들어져 있는 Feed Scene가 보인 후에 로그인 Scene가 present됬다. 추가적인 처리를 해서 Feed Scene가 보이도록 구현했다.

약간 의아했던 점은 강의 보기전에 난 로그아웃시에 로그인 기능을 Auth.auth.signIn(withEmail:email:password:) 을 바로 로그인 컨트롤러의 로그인에 현재 동적으로 바인딩된 vm을 이용해서 로그인 기능을 구현했는데 강의에서는 굳이,,?
Auth.auth.signIn(withEmail:email:password:) 이 메서드를 한번 감싸서 AuthService 클래스 함수로 구현해줬다.

새로 알게된 개념

초기에 사용자 회원가입을 할 때 Auth.auth()의 createUser함수를 통해 firebase의 Authentication 에 email, password를 등록하고 UID를 부여받았다. 이 덕에 파이어베이스에는 사용자의 이메일과 비번 그에따른 유일한 식별자 UID를 Authentication에 저장한다. UID를 통해 Firestore DB 컬랙션의 문서를 식별이 가능하고 필드값도 얻을 수 있다. (파이어베이스를 써서,, 상당히 간편했다. 백엔드의 입장에서 나중에 배워보고싶은 마음이 들었다.)

이 때문에 Auth.auth() 를 통해서 signIn할수도, signOut을 할 수 있다. 그리고 signIn을 한 경우 Auth에 특정 식별자가 기록이 되는 것 같다. 이 정보는 Auth.auth().currentUser를 통해 확인할 수 있다. 앱을 종료했다가 다시 실행해도 Auth에 저장된 currentUser는 Auth.auth().signOut()를 하기 전까지 계속해서 유지 된다.

// 추가로 구현해야할것

  • 간단한 커스텀 알림창