「reauthenticateWithPopup」を使用して簡単に再認証するために、ログインしているユーザのAuthProviderを検出しようとしています。ファイアベースで現在のユーザのAuthProviderを取得する
最も簡単な方法は、現在のユーザーから対応するAuthProviderオブジェクトを直接取得することですが、これは不可能です(私が間違っている場合は修正してください)。
もう1つのオプションは、firebase.auth.currenUser.providerIdを取得し、switch/case節を実行してfirebase.auth.AuthProviderを作成することです。文字列(例:「google.com」)の上にスイッチ/ケースを置かなければならないので、私は個人的にこのオプションが大好きです。しかし、これは私が考えることができる最高の解決策でした。
残念ながら、私が実装していたときに、私がGoogleからログインした場合でも電子メール/パスワードを使っていても、firebase.auth.currenUser.providerIdは常に「firebase」を返すことに気付きました。これはバグですか?私は何か間違っているのですか?
currentUser.providerDataにアクセスすると、このユーザーに使用可能なすべてのプロバイダが含まれていることがわかります。しかし、これはリストであり、このユーザーに複数のユーザーが存在する場合に、現在使用されているものを選択するかどうかはわかりません。
追加情報:
currentUser.providerDataの各プロバイダはproviderIdを有する:。firebase.auth()currentUser.providerData [0] .providerId。これを使用して、ユーザーを再認証することができます。また、現在のユーザーのために再認証するためのすべてのオプションを提供し、ユーザーがどちらを使用するかを決定させることもできます。 – bojeil
はい、それは私がやったと思ったことです。しかし、私はこの時間を認証するために使用されたものを知る直接的な方法があるのだろうかと思っていました。ユーザーが複数の認証方法(たとえば、アカウントがGoogle、Facebookなどでリンクされているなど)を持っている場合は、現在のアカウントを取得する方法が必要です。 – Escapecracker