이전 글에 이어서 구현을 해봅시다.
먼저 구현을 어떻게 했냐면.. 그냥 기본적으로 제공해주는거 사용해서 했어요.
첫 화면이구요. 여기서 첫번째 버튼을 눌러 들어가는 페이지에서
자신의 이메일과 비밀번호를 입력해서 회원가입(및 로그인)을 하는
시나리오로 구현을 해보았습니다. (매우 허접슨)
로그아웃은 이렇게 구성해놓았어요.
로그인 하면 이렇게 환영합니다. (이메일)님 안녕하세요!
라고 출력되게 해놓았고. 로그아웃 버튼을 누르면 냅다
그냥 첫화면으로 돌아갑니다.
우리가 먼저 파베를 사용하여 이런 회원가입/로그인 기능을 구현하기 위해서는
파베의 Auth에 와서 방법에 이메일/비밀번호와 Google을 설정해주어야 해요.
제공업체는 다양하기 때문에 원하시는 방법이 있다면 추가하셔요!
그래서 저렇게 이메일과 구글을 설정해놓고.. 코드를 적어볼게요.
사진을 보면 알 수 있듯이 이메일/비밀번호 로그인을 눌렀다면
이메일과 비밀번호를 입력 받아서 그걸로 로그인이 가능하도록 하게하면 되겠죵?
그러면 입력 받은 이메일과 비밀번호로 어떻게 사용자를 생성하냐면..
저기 신규 사용자 생성 주석 부분이 firebase에 새로운 사용자를 추가해주는 부분입니다!
이메일과 비밀번호의 값이 비어있지 않다면, 그걸로 생성해주는 거에요.
Auth.auth().createUser(withEmail: email, password: password) { [weak self] authResult, error in
guard let self = self else { return }
사실 이 부분만 등록하는 부분이고 나머지는
회원가입이 아니라 로그인을 할때 파베의 정보와 입력받은 이메일, 비번를
연결하여 에러처리를 해주고, 회원가입할 때 발생할 수 있는 에러를 처리해주는 부분이에요.
loginUser 부분이 파베와 연결해서 확인시켜주는 함수인데용
보시면 이름 자체가 signIn입니다. 즉 해당 이메일이 이미 파베에 있느냐 없느냐를 확인해주는 부분
그래서 만약에 로그인 하는 과정에서 에러가 났다면.. error.localizedDescription을 print 하도록!
지금 에러를 정의한 부분을 보면 17007 에러가 있는데 이 에러는 이미 가입한 이메일이라는 에러에요.
즉, 동일한 이메일로 중복해서 회원가입을 하려고 시도할때
또는 해당 이메일로 로그인을 시도하는데 비밀번호를 틀리게 입력했을 때 발생하는 에러입니다.
저는 에러 메세지를 표현할 수 있도록 해놓아가지구 17007 에러가 나면 라벨에 넣어주고 있어요.
어쨌든 그래서 이렇게 회원가입을 구현하면
실제로 이렇게 Auth에 정보가 쌓임니다.. ㅎㅎ
근데.. 그냥 파베에서 제공하는 이메일 비밀번호로 회원가입하는거는
비밀번호는 무조건 6자리 이상이면 돼요.
숫자/영어/특수문자 조건 없고 디폴트는 그냥 아무거나 6자리 이상이면 됩니다.
이런 조건을 바꿀 수 있는지 없는지는 모르겠어욤.. 나중에 알게되면 추가..하겠슴니다..
그럼 이제 구글 로그인으로 가보져
저는.. 젤 최신판의 파베를 써서 그런지 그냥 냅다 구현하고자 하는 부분에
파베에서 제공해주는 코드를 붙여서 사용했더니 구현이 되어서 그렇게 했습니다.
(https://firebase.google.com/docs/auth/ios/google-signin)
먼저 AppDelegate로 가서 이 부분을 추가하고
구글 로그인 버튼을 누르면 닥스에 나와있는 함수를 실행하도록 했어요.
이러면.. 회원가입 및 로그인이 잘 되더라구요.. (아마도..)
위에 결과 화면 보면 모자이크 된 부분이 제가 테스트한 구글 메일 계정이고 잘 추가된 것을 볼 수 있었어요.
예전에는 AppDelegate에서 GIDSignInDelegate를 채택하여 구현했지만,
최신 버전부터는 해당 프로토콜을 채택하여 구현하는 방법을 지원하지 않는다고 하더라구요.
그래서 구글 독스 보고 따라했더니 돼서 그냥 이렇게 사용했습니다...
(혹시 틀렸다면 제발 알려주세용!!!!)
그런 다음 로그아웃은 어떻게 구현하냐면..
엄청엄청 간단해요. 이미 signOut 메서드를 지원해주기 때문에
(근데 throws니까 do try로 사용해야해용!)
로그아웃 하는 부분에 이렇게 넣어주기만 하면 됩니다.
정말 정말 쉽고 간단하죵 ?
이거를.. 지금 앱스쿨 프로젝트 하는 곳에서 사용하고 싶었으나..
스유에서 하고 있어서 요고랑은 조오금 다르니.. 스유 버전도 나중에 추가 해 볼게요!!
요즘 파베에 빠져서 열심히 하고 있습니다. 공짜 서비스치고 넘나 좋은것.
그럼 정말 오포완~~!
'Swift > UIKit' 카테고리의 다른 글
UIKit의 생명주기를 알아보자.. (navigationController, modal로 이동할 때까지) (0) | 2024.04.17 |
---|---|
[UIKit] UIKit, Firebase 연결하기 (0) | 2023.08.26 |