電子メールのサインインメソッドを取得するとEmailAuthProvider.PROVIDER_ID
(パスワード)がsignInWithEmailAndPassword
返されますが、を使用して同じ電子メールでサインインしようとすると、返されたタスクが成功した場合でも、匿名でユーザーにサインインしgetCurrentUser().getProviders()
、空の配列を返します。
instance.fetchSignInMethodsForEmail("[email protected]")
.addOnSuccessListener(task -> {
List<String> signInMethods = task.getSignInMethods();
if (signInMethods.contains(EmailAuthProvider.PROVIDER_ID)) {
instance.signInWithEmailAndPassword("[email protected]", "password")
.addOnSuccessListener(task1 -> {
FirebaseUser currentUser = instance.getCurrentUser();
Log.i("", "IsAnonymous: " + currentUser.isAnonymous());
Log.i("", "Email: " + currentUser.getEmail());
Log.i("", "Providers is Empty: " + currentUser.getProviders().isEmpty());
});
}
});
出力
IsAnonymous:true 電子メール:[email protected] プロバイダーは空です:true
このコードは問題を確実に再現するわけではないことに注意してください。問題は環境/構成に関連している可能性がありますが、メールとパスワードの組み合わせは有効であり、Firebase認証ダッシュボードに存在します。さらに、タスクは成功しますが、ユーザーは匿名でサインインし、プロバイダーは返されません(パスワードプロバイダーが必要です)
これはFirebaseによって対処されています。それはlibの問題でした。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加