Firebase Authenticateを使ってiOSでログイン処理を行う
1. Firebase Antheticate
1.0 Firebase Autheticateとは
Firebase Authticateとは、
パスワード、電話番号、一般的なフェデレーション ID プロバイダ(Google、Facebook、Twitter)などを使用した認証を行うことができるサービス
のことです。しかも、めちゃめちゃ簡単に実装できます。
あまり本質的ではないので、Firebaseについては説明しません。
1.1 公式ドキュメント
詳しく知りたい人は以下のドキュメントをごらんください。
Firebase Authentication | Firebase
1.2 サービスとしてやっていくには
Firebase Authenticateは認証の必要最低限しかやってくれません。
なので、れっきとしてユーザーの登録情報を保存するデータベースなどが必要です。 そのようなデーターベースなどのバックエンドのことをカスタムユーザーバックエンドといいます。
以下のようなアーキテクチャになると思います。
今回はログイン処理だけしたいので、カスタムユーザーバックエンドは実装しません。
2. 実装
2.1 Firebase SDK for iOSをインストール
Cocoapodを使ってインストールします。
pod 'Firebase/Auth'
2.2 Firebaseでプロジェクトの作成・iOSアプリを有効化する
Google Cloud Platform(GCP)と連携させることができます。
なので、最初にGCPを作っておくのがのちのちMySQLなどを構築するときは便利でしょう。
作成されると以下のような画面になります。
これからアプリを有効化します。
Project Overviewの隣の設定メニューを押して「アプリ」セクションをみて「iOSアプリにFirebaseを追加」します。
まず、バンドルネームなど必要なものを設定します。あとは手順に従うだけです。
正しく認証されると以下のようになります。
2.3 メール・パスワード認証を有効にする
「ログイン方法」タブから有効にすることができます。
2.4 Firebase作成
まず、初期化をする必要があります。
共通で設定したいので、AppDelegate
に追加します。
import Firebase ... FirebaseApp.configure() ...
2.4 Signup実装
ここでは以下のようにインポートします。
ViewControllerを分ける時は、その都度、インポートしてください。
import FirebaseAuth
サインアップのbuttonが押されると
@objc func signupPressed(_ sender: Any){ guard let email = emailTextField.text else {return} guard let password = passwordTextField.text else {return} Auth.auth().createUser(withEmail: email, password: password){(user,error) in // なにかする... } }
2.5 Signin実装
ここではSigninするViewControllerも
import FirebaseAuth
そしてUIButton
を定義していて、そのボタンを押すと以下のようなメソッドが呼ばれるとします。
@objc func signinPressed(_ sender: Any){ guard let email = emailTextField.text else {return} guard let password = passwordTextField.text else {return} Auth.auth().signIn(withEmail: email, password: password){(user,error) in // なにかする... } }
2.6 おまけ
まだまだいろんなプロバイダー(facebook, github...)を使って認証することができます。 使うときが来たら使おうと思います。
3. まとめ
FirebaseはWeb Appでしか使ったことがなかったのですが、全く一緒で、とにかく使いやすいの一言につきます。