Это ожидаемое поведение. Если для текущей электронной почты не существует типа учетных данных (Facebook, Google и т. Д.), Он будет создан и создаст сеанс пользователя. Он также переопределит и удалит другие типы учетных данных, такие как пароль, и если вы не хотите этого, вы можете проверить Link Multiple Auth Providers to an Account
, чтобы увидеть, как связать и сохранить несколько поставщиков учетных данных.
Ошибка FirebaseAuthUserCollisionException
возникает, когда уже создана учетная запись с адресом электронной почты того же типа, например, если существует учетная запись с поставщиком Google и попытка войти в другого поставщика Google, который имееттот же адрес электронной почты, но не те же учетные данные.
Вы должны использовать signInWithEmailAndPassword
, если вы хотите использовать только адрес электронной почты / пароль для входа в систему пользователя.
Вы также можете использовать fetchSignInMethodsForEmail
для извлечения доступных методов ввода для каждого электронного письма.