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の機能はいろいろ試したいと思います。
この記事が気に入ったらサポートをしてみませんか?