私はSwift iOSアプリにFirebase Authを使用しています。 Firebase Auth UIを「ドロップイン」認証システムとして使用することをお勧めしますが、初期ログインのみを処理します。私は現在、ユーザーが電子メールやパスワードなどのプロファイルを変更できるようにする作業を進めています。Firebase Auth UIはどのように再認証を処理しますか?
これらの変更を行うためのドキュメントは、特定の変更が最近ログインしたことをユーザに要求いくつかの場所で言及(https://firebase.google.com/docs/auth/ios/manage-users#get_the_currently_signed-in_userを参照してください):
を一部のセキュリティに敏感なアクション-ようなアカウントの削除など、設定プライマリ電子メールアドレス、およびパスワードの変更 - は、ユーザーが最近サインインしたことを要求します。これらの操作のいずれかを実行し、ユーザーが長時間前にサインインした場合、アクションはFIRAuthErrorCodeCredentialTooOldエラーで失敗します。
まず、APIのどこにでもFIRAuthErrorCodeCredentialTooOld
エラーはありません。
第二に、ドキュメントは、このサンプルコードで、この問題を解決するためにreauthenticate(with:)
を使用することを提案:
let user = FIRAuth.auth()?.currentUser
var credential: FIRAuthCredential
// Prompt the user to re-provide their sign-in credentials
user?.reauthenticate(with: credential) { error in
if let error = error {
// An error happened.
} else {
// User re-authenticated.
}
}
問題がある、私はFirebase認証UIを使用するので、私は、ユーザーの資格情報を取得するためのカスタムUIを持っていません。
このエラーが発生したときにログインに使用したのと同じFirebase Auth UIを提示することで再認証できます。しかし、これが正当な方法であるのか、それがまったく問題ないのか、それとも将来的にはうまくいくのかどうかはわかりません。 Firebase AuthのUIコードベースを確認したところ、どこでもreauthenticate()
への呼び出しはありません。このエラーが発生した場合には、ドキュメンテーションは特にこのメソッドを呼び出すので、混乱します。
複数のプロバイダを含む再認証を実行するためにUI全体を構築する必要がある場合、Firebase Auth UIを使用するポイントは何ですか?
もちろん、ユーザーがFacebookやGoogleなどのプロバイダにログインしている場合はどうなりますか?このエラーは電子メールログインを使用している場合にのみ発生することを示すものではありません。 –
その場合は、まずユーザーにログイン方法を入力する必要があります。警告コントローラだけでなく、適切なView Controllerが必要になるでしょう。 – ThunderStruct
ありがとうございました。ですから、私の元々の質問は残っています。この再認証のためにFirebase Auth UIをもう一度使うことはできますか?どこでも再認証を呼び出すわけではありません。しかし、もう一度ログインしても大丈夫なら、それはうまくいくはずですか? Firebaseチームの説明が役立ちます。 –