iOSアプリで Firebase の認証機能を使う
はじめに
先日、BaaS の1つである Firebase の勉強がてらサンプル的なiOSのチャットアプリを作ったので、引き続き Firebase の機能を触ってみることにしました。今回は認証機能を使ってみようと思います。
先日の記事はこちら。
crossbridge-lab.hatenablog.com
Firebaseが提供する認証方法
Firebaseでは以下の認証方法を提供しています。
今回はメールアドレスとパスワードでの認証で試してみます。
Email & Password での認証を有効にする
まずFirebaseのページにログインし、アプリの管理画面でEmail & Passwordでの認証を有効にする必要があります。左側のメニューからLogin & Authを選択し、Email & PasswordタブのEnable Email & Password Authenticationにチェックを入れます。
アカウントの作成
アカウントの作成方法は Firebase の管理画面で行う方法と、SDKにアカウント作成のAPIがあるので実装してアプリ内でユーザ自身にアカウントを作らせる方法があります。
管理画面でアカウントを作成する
Email & PasswordタブのEnable Email & Password Authenticationにチェックを入れるとその画面の下にRegistered Usersという表示が追加されます。右側にあるAdd Userボタンをクリックします。
メールアドレスとパスワードを入力するダイアログが表示されるので入力してAdd Userボタンをクリックすればアカウント追加完了です。
アプリ内でアカウントを作成する
Firebase の SDK にはアカウント作成の API も用意されているのでアプリ内でユーザ自身にアカウントを作成してもらうことも可能です。Firebase
クラスのcreateUser
メソッドを使ってメールアドレスとパスワードを指定してアカウントを作成します。
createUser
メソッドを使ってアカウント作成を行っただけではログイン状態にはなりません。実際のアプリで起動時にアカウントをユーザに作成してもらったあとはそのまま後述のログインAPIを呼ぶことになるでしょう。
let firebaseRef = Firebase(url:"https://◯◯.firebaseio.com") firebaseRef.createUser("メールアドレス", password: "パスワード") { error, result in if error != nil { // アカウント作成失敗時の処理 } else { // アカウント作成成功時の処理 } }
Email & Password を使ってログインする
作成したアカウントでアプリ内で認証(ログイン)を行います。Firebase
クラスのcreateUser
メソッドを使います。
firebaseRef.authUser("メールアドレス", password: "パスワード") { error, authData in if authData != nil { // ログインに失敗時の処理 } else { // ログインに成功した時の処理 print(authData.uid) } }
アクセスルールを変更する
ログインしている場合のみデータにアクセスできるようにアクセスルールを変更します。管理画面の左側のメニューでSecurity & Rulesを開きます。
以下のように修正することでログインしている場合のみデータにアクセスできるようになります。
{ "rules": { ".read": "auth != null", ".write": "auth != null" } }
まとめ
Firebase で Email & Password を使って認証を行うことはこのようにちょっとしたコードで実現可能です。Facebook等を使った認証もそれぞれのサービスでアプリを登録する必要がありますが Firebase 側の処理は簡単に行えるようなので時間がある時にまた試してみようと思います。