【SwiftUI/Firebase】Realtime Databaseで再認証(reauthenticate)する方法!emailとGoogle

この記事からわかること
- SwiftでFirebaseのRealtime Databaseで再認証を実行する方法
- reauthenticateメソッドの使い方とクレデンシャル情報
- emailアカウントとGoogleアカウントの場合の再認証方法
index
[open]
\ アプリをリリースしました /
Realtime Databaseで再認証する方法
Realtime Databaseではユーザー情報の編集やメールアドレスの変更、退会手続きを行うためにはユーザーが直近でログインしている必要があります。
ログインから時間を有している場合はユーザーに対して再認証を求めます。
reauthenticateメソッド
再認証の流れはユーザーのログイン方法(email/passwordやGoogleなど)によって異なりますが実行するのはFIRUser
のreauthenticate
メソッドで共通しています。
引数にはユーザー情報を保持するクレデンシャル情報を渡します。
クレデンシャルとは?
クレデンシャルとはセキュリティ関連の用語の1つでユーザー認証に使用される情報の総称のことです。Authでもユーザーの認証情報をクレデンシャルと呼んでいます。
引数に渡すクレデンシャル情報はユーザーのログイン方法によって構築方法が異なります。
email/passwordアカウントの再認証方法
まずは通常のemail/passwordアカウントで再認証するにはEmailAuthProvider
を使ってクレデンシャルを構築します。
引数には再認証を行うユーザーのメールアドレスとパスワードを渡します。メールアドレスはcurrentUserのemailプロパティからも取得することができますがパスワードはユーザーから再度入力してもらう必要があります。
TextFieldで入力されたパスワードを使って再認証できるようなメソッドを実装してみました。再認証の結果はcompletionHandler
で受け取ることができます。
Googleアカウントでの再認証方法
Googleアカウントの場合はGoogleアカウントでログインする時の流れを利用してクレデンシャル情報を取得します。
GoogleではGoogleAuthProvider
を使ってクレデンシャル情報を構築します。そのためにブラウザからGoogleアカウントを選択してもらう処理を挟んでおきます。
FacebookやTwitterなどの再認証
それ以外のクレデンシャルの構築方法は以下の通りです。
実例:退会処理
例えばユーザーが退会(ユーザー情報を抹消)する時に再認証は必要になります。以下は退会処理に再認証を組み込んだ例です。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。