FireAuth에서 메일 발송 확인 방법

16001 단어 FirebaseSwiftRxSwift
개요
평소 앱을 만들 때 확인 메일을 보낸 적이 없다고 생각해서 조사해봤어요.
또 RxSwift 공부도 병행하는 김에 RxSwift로 썼다.
RxSwift 해설은 없습니다.
그럼 바로 코드를 쓰세요.
ViewModel
protocol ViewPresentable {
    typealias Input = (
        emailText: Driver<String>,
        passwordText: Driver<String>,
        tappedButton: Driver<()>
    )
    typealias Output = (
        isValid: Driver<Bool>, ()
    )

    var input: ViewPresentable.Input { get }
    var output: ViewPresentable.Output { get }
}

class ViewModel: ViewPresentable {
    var input: ViewPresentable.Input
    var output: ViewPresentable.Output

    private var emailBehavior = BehaviorRelay<String>(value: "")
    private var passwordBehavior = BehaviorRelay<String>(value: "")

    private let disposeBag = DisposeBag()

    init(input: ViewPresentable.Input) {
        self.input = input
        self.output = ViewModel.output(input: self.input)

        input.emailText
            .drive(emailBehavior)
            .disposed(by: disposeBag)
        input.passwordText
            .drive(passwordBehavior)
            .disposed(by: disposeBag)

        process()
    }
}

private extension  ViewModel {
    static func output(input: ViewPresentable.Input) -> ViewPresentable.Output {
        let emailDriver = input.emailText
        let passwordDriver = input.passwordText

        let isValid = Driver.combineLatest(emailDriver, passwordDriver) { (email, password) -> Bool in
            return !email.isEmpty && !password.isEmpty
        }.asDriver(onErrorJustReturn: false)

        return (
            isValid: isValid, ()
        )
    }

    func process() {
        self.input
            .tappedButton.drive(onNext: {
                let email = self.emailBehavior.value
                let password = self.passwordBehavior.value
                AuthManager.shared.createUser(email: email, password: password)
            }).disposed(by: disposeBag)
    }
}
AuthManager
class AuthManager {
    static let shared = AuthManager()

    private let auth = Auth.auth()
}

extension AuthManager {
    func createUser(email: String, password: String) {

        auth.createUser(withEmail: email, password: password) { (result, error) in
            guard let user = result?.user, error == nil else {
                print(error!)
                return
            }

            user.sendEmailVerification { (error) in
                if let error = error {
                    print(error)
                }
            }
        }
    }
}

이번 보도의 간은요.
user.sendEmailVerification
섹션
이렇게 하면 확인 메일을 보낼 수 있습니다.
다만, 기본적으로 일본어가 아니기 때문에 Firebase 콘솔을 사용합니다
Authentication을 엽니다.탭
그곳의 맨 밑에 템플릿 언어가 있기 때문에 펜슬에 따라 언어를 수정할 수 있습니다.
그리고 우편물의 내용도 변경할 수 있으니 한번 해 보세요.
ViewController
class ViewController: UIViewController {

    @IBOutlet weak var emailField: UITextField!
    @IBOutlet weak var passwordField: UITextField!
    @IBOutlet weak var subscribeButton: UIButton!

    private let disposeBag = DisposeBag()
    private lazy var viewModel = ViewModel(input: (emailText: emailField.rx.text.orEmpty.asDriver(),
                                                   passwordText: passwordField.rx.text.orEmpty.asDriver(),
                                                   tappedButton: subscribeButton.rx.tap.asDriver()))

    override func viewDidLoad() {
        super.viewDidLoad()
        setupBind()
    }

    private func setupBind() {
        viewModel.output.isValid
            .drive(subscribeButton.rx.isEnabled)
            .disposed(by: disposeBag)
    }

}
이런 느낌이에요.
실행을 해보면 우편물이 도착한다.

총결산
이번 해설은 적지만 확인 메일만 보내기 때문에 난이도가 높지 않다.
지금까지는 이루어지지 않았지만 메일 확인은 필수죠.
지적이 있으면 메시지를 남겨 주세요.

좋은 웹페이지 즐겨찾기