Swift 일기장 개발 일기 7 (Firebase Auth로 회원 가입)

송민준·2023년 1월 14일
0

일기장 개발 일기

목록 보기
7/11

로그인 했으니까 이제 회원가입해야겠죠!
생각보다 간단합니다. 회원가입도 로그인과 같이 핵심적인 코드 한 줄로 설명이 가능합니다.
그전에 ViewController 생성했습니다.

SignInViewController


이 회원가입 VC는 로그인 VC에서 회원가입 버튼과 Segue로 연결하여 간단하게 present가 됩니다.
회원가입 진행 상태를 알려주는 statusbar, 이메일, 비밀번호, 닉네임 텍스트 필드도 필요하니 만들었습니다.

import UIKit
class SignInViewController : UIViewController{
    @IBOutlet weak var statusBar: UILabel!
    @IBOutlet weak var emailTextField: UITextField!
    @IBOutlet weak var nicknameTextField: UITextField!
    @IBOutlet weak var passwordTextField: UITextField!
    
    let authViewModel = AuthViewModel()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
    }
    @IBAction func signInButtonClicked(_ sender: Any) {
        let email:String = emailTextField.text!
        let password:String = passwordTextField.text!
        authViewModel.signIn(email: email, password: password) { user, error in
            if user != nil {
                self.statusBar.text = "회원가입 성공!"
                self.dismiss(animated: true)
                print("Sign In Success!")
                
            }
            else{
                self.statusBar.text = "유효하지 않은 아이디 또는 비밀번호입니다."
                print("Sign In Failed. \(error.debugDescription)")
            }
        }
    }
}
  • let authViewModel = AuthViewModel(): 이전 글에서 생성한 AuthViewModel을 선언했습니다.

  • authViewModel.signIn(email: email, password: password) { user, error in ...: 이후에 작성할 AuthViewModel의 signIn 메서드에서는 email과 password, 그리고 completionClosure가 필요하므로 인자와 후행 클로저를 넘겨줬습니다.

    -회원가입 요청이 완료된 후

    • 요청이 정상으로 완료되면 성공 메시지와 Dissmiss를 동시에 합니다.
    • 요청에 에러가 있으면 statusBar에 표시합니다.

AuthViewModel

import Foundation
import FirebaseAuth
class AuthViewModel : NSObject {
    ...
    func signIn(email:String, password:String, completeClousure:((AuthDataResult?, (any Error)?) -> Void)?){
        print("Try Signin: \(email), \(password)")
        Auth.auth().createUser(withEmail: email, password: password, completion: completeClousure)
    }
}
  • Auth.auth().createUser: 사실 이 블로그 글은 이 코드 하나로 모든 것이 설명이 됩니다. 이메일과 비밀번호가 주어지면 Firebase Auth 서버에 추가를 합니다.
    - 주의할 점이 있는데 Auth는 비밀번호가 부실(6자 이하)하면 요청을 거부합니다.

테스트



(이메일의 대문자는 자동으로 소문자로 바꿔주네요)

이제 만들어진 아이디마다 각자의 데이터를 보관하는 일이 남았습니다. 이 기능만 개발한다면 간단하지만 정상적으로 사용가능한 어플이 만들어집니다.

profile
개발자

0개의 댓글