Firebase Authentication の iOS 導入手順【⑥ユーザーの再認証編】【SwiftUI】

前回の続きです。

公式ドキュメントにある通りですが、ユーザーの削除・メールアドレスの変更・パスワードの変更などと言った、セキュリティ上の重要な操作を行う場合は最近ログインしている必要があります。

ログインからしばらく時間が経っていると requiresRecentLogin エラーが発生する場合があります。

そのため、そのような操作を行う前に、ユーザーの再認証を行うことをお勧めします

今回は、そのユーザーの再認証のプログラムについて紹介します。

他の Firebase Authentication についての記事一覧は以下の通りです。

Firebase Authentication の iOS 導入手順【⑥ユーザーの再認証編】【SwiftUI】

ユーザーを再認証する reauthenticate メソッド

user?.reauthenticate(with: credential) { error in }

ログイン中のユーザー(currentUser)に対して再認証を掛けます。

引数の credential は以下のように生成します(credential とは保証書・証明書などと言った意味です)。

let credential = EmailAuthProvider.credential(withEmail: email, password: password)

password には変更前のパスワードを渡します

パスワード変更時の実装例

今回はパスワードの変更をする際の流れを例に取ります。

if let user = Auth.auth().currentUser {
    let credential = EmailAuthProvider.credential(withEmail: user.email ?? "", password: self.oldPassword)
    user.reauthenticate(with: credential, completion: { authResult, error in
        if error == nil {
            user.updatePassword(to: self.password) { error in
                  
            }
        }
    })
}

パスワード変更時は現在のパスワードも入力してもらうはずなので、それを渡すようにします。

reauthenticate の結果エラーがなければ updatePassword を実行するようにしましょう。

メールアドレスの変更やユーザー削除なども、同じ要領で行えるはずです。

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です