로그인 했으니까 이제 회원가입해야겠죠!
생각보다 간단합니다. 회원가입도 로그인과 같이 핵심적인 코드 한 줄로 설명이 가능합니다.
그전에 ViewController 생성했습니다.
이 회원가입 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가 필요하므로 인자와 후행 클로저를 넘겨줬습니다.
-회원가입 요청이 완료된 후
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 서버에 추가를 합니다.
(이메일의 대문자는 자동으로 소문자로 바꿔주네요)
이제 만들어진 아이디마다 각자의 데이터를 보관하는 일이 남았습니다. 이 기능만 개발한다면 간단하지만 정상적으로 사용가능한 어플이 만들어집니다.