iOSのFirebase Authenticationで簡単なログイン機能を実装

前回の続きでFirebaseの入門的なことをやっています。Firebase Authenticationを利用してメールアドレスでのログインを実装しました。

gif動画作成したのにnoteへのアップロード失敗します!ここに貼りたいです!

まずはFirebaseの準備から。Firebaseにログイン後"Authentication"へ。ログイン方法から"メール / パスワード"を有効にしておきます。これでFirebase側はOKです。

今度はxcodeプロジェクトに移ります。まずはcocoapodsでFirebaseAuthのインストールです。

pod 'Firebase/Auth'

と記述してpod installします。Firebaseの導入がまだなら

pod 'Firebase/Core'
pod 'Firebase/Auth'

Firebase/Coreもインストールしておきましょう。インストール後は以下のようにFirebaseApp 共有インスタンスを設定します。

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    FirebaseApp.configure()
    return true
}

次に認証状態をリッスンします

override func viewDidLoad() {
    super.viewDidLoad()
    handle = Auth.auth().addStateDidChangeListener { (auth, user) in
    }
}

リスナーのデタッチも書いておきます。

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(true)
    Auth.auth().removeStateDidChangeListener(handle!)
}

あとは実際にユーザー作成(register)とログイン(login)処理を書いていきます。ユーザーが入力したメールアドレスとパスワードをcreateUser・signInに渡しているだけですね。

@IBAction func register(_ sender: Any) {
   guard let email = registeringEmail.text, let password = registeringPassword.text else {
       return
   }
   
   Auth.auth().createUser(withEmail: email, password: password) { (user, error) in
       if (user != nil && error == nil) {
           print("register successed")
           self.registeringEmail.text = "";
           self.registeringPassword.text = ""
       } else {
           print("register failed")
       }
   }

}
@IBAction func login(_ sender: Any) {
   
   guard let email = loginEmail.text, let password = loginPassword.text else {
       return
   }
   
   Auth.auth().signIn(withEmail: email, password: password) { (user, error) in
       if (user != nil && error == nil) {
           let viewcontorller:LoginSuccessedViewController = self.storyboard?.instantiateViewController(withIdentifier: "LoginSuccessedViewController") as! LoginSuccessedViewController
           self.navigationController?.pushViewController(viewcontorller, animated: true)
       } else {
           print("user not found")
       }
   }
}

以上でログインが完了しています。自前でDB・個人情報を持たずともこのように簡単に認証ができます。ここはnavigationcontrollerでpushしているだけなので簡単に元の画面に戻れてしまいますが…

ソースはgithubにあげてあります。他にもFirebaseの機能はいろいろ試したいと思います。

この記事が気に入ったらサポートをしてみませんか?