안녕하세요 KataRN입니다.
오늘은 Firebase 인증에 대해 설명해드리려고 합니다.
Firebase Auth 로 무엇을 할 수 있는가?
-> 이것을 이용해서 회원가입, 로그인 등을 구현 할 수 있습니다.
로그인구현에 반드시 필요한것...은 아니고... 구현하는데 필수적이진 않지만 이용하면 쉬워지는 것...
제가 처음 배울때 가장 많이 들은 라이브러리가 2개 있는데 Firebase와 Alamofire 두가지입니다.
그래서 언젠간 이 두가지는 꼭 글을 써야지 했는데... 드디어 쓰네요...
게으른 나...
저희가 로그인을 하려면 무엇이 필요할까요?
우선 회원가입을 해야겠네요.
회원가입을 하면 아이디 및 비번, 정보 서버(DB)가 필요하겠죠?
그래야 서버(DB)에 있는 아이디와 비밀번호를 체크해서 로그인이 가능하기 때문이죠.
이걸 제가 다 만들려니 벅찹니다...
그래서 Firebase에 있는 인증(Auth)기능을 이용해보려고 합니다.
서론이 길었네요
사전작업 : 코코아팟을 이용하여 Firebase/Auth를 설치
https://katarnios.tistory.com/23
간단한 설정부터 시작해보도록하죠.
Firebase의 기본설정이 되어있으신 분들은 "더보기"버튼을 누르지 마시고 진행하시면 됩니다.
Firebase가 처음이신 분들은 바로 아래 "더보기"버튼을 눌러주세요.
파이어베이스 홈페이지에 들어갑시다.(https://console.firebase.google.com/project/_/authentication/users)
그 뒤는 이미지로 알려드릴게요~
여길 보시면 다양한 기능들이 있습니다.
오늘은 인증만 다루지만 조만간 나머지도 올리겠습니다!!! 반드시!!
자 이제 인증하기위한 프로젝트 등록은 끝났습니다.
이제 iOS앱을 추가하겠습니다.
이건 iOS뿐만 아니라 안드로이드 등 다른 것들도 추가할 수 있다는 거죠ㅎㅎ
이제 앱으로 돌아가서 AppDelegate를 열어줍니다. 그리고 아래처럼~
그러면 이제 파이어베이스가 작동은 하는데... 아직 설정이 더남았습니다ㅎㅎ
포기하지마세요. 힘냅시다.
홈페이지에 다시 돌아가서 아래 인증 콘솔로 들어가봅시다.
저희가 할 수 있는 로그인방법이 12가지나 있습니다.
여기에 없는건 파이어베이스를 통해서가 아닌 자체 sdk를 이용하면 됩니다.
저희는 오늘 이메일/비밀번호를 이용한 로그인을 해보겠습니다.
이제 간단한 UI를 만들고~(글이 길어져서 생략할게요. 원하시면 댓글 남겨주세요. 추가해둘게요)
이렇게 만들었습니다.
1. 회원가입
이제 다음버튼을 누르면 아이디와 비밀번호를 이용하여 회원가입을 해보겠습니다.
import FirebaseAuth
Auth.auth().createUser(withEmail: email, password: password) {[weak self] authResult, error in
guard let self = self else { return }
if let error = error {
let code = (error as NSError).code
switch code {
case 17007: //이미 가입한 계정
//로그인 로직 추가(예정)
default:
self.errorText.text = error.localizedDescription
}
}
}
에러코드(17007)는 저희가 정하는게 아니라 파이어베이스에서 제공하는 코드이기 때문에 정해져있습니다.
제가 임의로 설정한것은 아닙니다.
이렇게 하면 파이어베이스에 계정이 생성됩니다ㅎㅎ..
2. 로그인
이번엔 위에서 17707코드일 경우 로그인이 되는 로직을 만들어봅시다.
import FirebaseAuth
Auth.auth().signIn(withEmail: email, password: password) {[weak self] _, error in
guard let self = self else { return }
if let error = error {
self.errorText.text = error.localizedDescription
} else {
self.showMainViewController()
}
}
위에서도 에러메시지를 적용하였었는데 이번엔 에러메시지도 보여드릴게요.
아래 메시지는 이메일 유형이 아니라서 뜬 메시지입니다.
파이어베이스 인증에서 이런것들도 이용가능하니 편하네요.
3. 로그아웃
이번엔 로그아웃입니다.
import FirebaseAuth
let firebaseAuth = Auth.auth()
do {
try firebaseAuth.signOut()
self.navigationController?.popToRootViewController(animated: true)
} catch let signOutError as NSError {
print ("Error signing out: %@", signOutError)
}
예외처리 (throws, do-catch, try) 를 이용했습니다.
그리고 Auth.auth().signOut()을 이용하여 로그아웃 처리 했습니다.
4. 암호재설정(이메일로 링크보내기)
암호재설정을 누르면 아이디인 이메일로 재설정 링크를 보냅니다.
let email = Auth.auth().currentUser?.email ?? ""
Auth.auth().sendPasswordReset(withEmail: email, completion: nil)
5. 회원정보 수정
간단하게 만들기 위해 변하게될 프로필을 코드에 포함시켰습니다.
import FirebaseAuth
let changeRequest = Auth.auth().currentUser?.createProfileChangeRequest()
changeRequest?.displayName = "KataRN"
changeRequest?.commitChanges { _ in
let displayName = Auth.auth().currentUser?.displayName ?? Auth.auth().currentUser?.email ?? ""
self.welcomeLabel.text = "환영합니다.\n\(displayName)님"
}
여기까지가 Firebase / Auth를 이용한 기본 이메일 로그인, 로그아웃, 암호재설정, 회원정보수정 이었습니다.
다음 글에서는 구글로그인, apple로그인을 알아보겠습니다.
https://katarnios.tistory.com/46
https://katarnios.tistory.com/47
오늘도 긴글 읽어주셔서 감사합니다.
'Old_SWIFT(221012) > 라이브러리이야기' 카테고리의 다른 글
Kingfisher 다루기 (0) | 2022.03.22 |
---|---|
Firebase Auth 다루기 (3/3) (Apple 로그인) (0) | 2022.03.21 |
Firebase Auth 다루기 (2/3) (구글로그인) (0) | 2022.03.20 |
다양한 그래프 그리기(라이브러리 Charts 사용, 파이차트, 원차트 포함)(쉬움주의, 따라만해) (0) | 2021.12.22 |
CocoaPods(코코아팟) 사용법(쉬움주의, 따라만해), Charts라이브러리 설치 (0) | 2021.12.22 |