Firebase의 실시간 데이터베이스를 간단하게 사용해봤는데,
회원가입과 로그인 기능은 Firebase의 Authentication 기능으로 더 편리하게 관리할 수 있다.
Firebase Console - Authentication
다양한 소셜 로그인 기능도 제공하고 있는데 이건 다음에 추가하도록 하고!
이메일/비밀번호를 선택한다.
비밀번호가 없는 로그인은 사용하지 않았다.
새 제공업체 추가 버튼을 누르면 소셜 기능을 추가할 수 있고,
오른쪽 연필 버튼을 누르면 비밀번호가 없는 로그인 설정도 다시 해줄 수 있다.
Users 탭을 클릭하면 Auth 기능을 통해 가입한 사용자들을 볼 수 있고,
사용자 추가 버튼을 눌러서도 추가할 수 있다.
Firebase Console에서 설정은 끝났으니 이제 코딩하면 된다.
* Firebase Auth 패키지도 추가해야 됨 ! (Xcode or CocoaPods)
로그인 기능 구현
Firebase Console 내에서 사용자를 바로 추가할 수 있어서
회원가입 기능을 구현하기 전에 로그인 기능부터 구현했다.
사용자 추가 버튼을 눌러서 테스트 유저를 추가했다.
추가되는 사용자들은 사용자 UID라는 고유한 값을 가지게 된다.
LoginViewController
import FirebaseAuth
class LoginViewController: UIViewController {
@IBOutlet weak var emailTextField: UITextField!
@IBOutlet weak var pwTextField: UITextField!
@IBOutlet weak var loginButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
/* Login Button Action */
@IBAction func userLoginAction(_ sender: Any) {
let email: String = emailTextField.text!.description
let pw: String = pwTextField.text!.description
// Firebase Auth Login
Auth.auth().signIn(withEmail: email, password: pw) {authResult, error in
if authResult != nil {
print("로그인 성공")
} else {
print("로그인 실패")
print(error.debugDescription)
}
}
}
}
FirebaseAuth 패키지 추가하고 import하면 Auth 클래스를 사용할 수 있다.
Auth.auth().signIn(withEmail: email, password: pw)를 구현하려면 두 개의 파라미터 값을 입력하게 한다.
성공 여부를 알기 위한 authResult와 에러 메시지를 확인할 수 있는 error로 Firebase 공식 참고 문서에 이렇게 지정했길래 나도 따라 했지만 이런 변수 이름은 편한 대로 바꿔도 된다.
첫 번째 파라미터인 authResult가 nil이 아니면 성공, nil이면 실패한 거고 실패한 이유를 알 수 있다.
로그인 실행 결과
이메일과 패스워드를 받는 텍스트 박스에 각각 입력 후 Login 버튼을 클릭하면 작성한 코드가 실행된다.
Firebase console에서 추가했던 사용자의 정보 그대로 로그인 기능이 잘 작동된다!
에러 코드값
// Firebase Auth Login
Auth.auth().signIn(withEmail: email, password: pw) {authResult, error in
if authResult != nil {
print("로그인 성공")
} else {
print("로그인 실패")
print(error.debugDescription)
if let errorCode: AuthErrorCode = AuthErrorCode(rawValue: error!._code) {
print(errorCode.rawValue)
}
}
}
로그인 실패 시 에러 코드값만 따로 출력하는 로직을 추가했다.
콘솔창에 찍힌 에러 메시지(error.debugDescription)를 보면 Code=...가 적혀있는 걸 볼 수 있다.
등록되지 않은 이메일 일 때, 이메일은 맞지만 패스워드가 틀렸을 때를 코드값으로 알 수 있다.
이 코드 값을 사용하면 로그인 버튼을 누른 뒤 나올 에러 메시지를 alert창을 좀 더 자세하게 보여줄 수 있을 것 같다.
'DEV - iOS > iOS' 카테고리의 다른 글
[Swift / SpringBoot] WebView로 SpringBoot 서버 화면 띄우기 (0) | 2022.08.02 |
---|---|
[Swift] Firebase Firestore 데이터 저장하기(이메일 중복 검사) (0) | 2022.05.21 |
[Swift] iOS 프로젝트에 Firebase 연동하기 2 - Realtime Database (0) | 2022.04.11 |
[Swift] iOS 프로젝트에 Firebase 연동하기 (0) | 2022.04.11 |
[XCode / Error] Unable to boot device because it cannot be located on disk (0) | 2022.04.06 |