... если вы не позволяете несколько учетных записей с одинаковым адресом адресом, пользователь не может создать новую учетную запись, что знаки в аккаунте Google с адрес электронной почты [email protected], если уже есть учетная запись, которая подписывается с использованием адреса электронной почты [email protected] и пароля .FirebaseAuthInvalidCredentialsException при использовании «Один счета на адрес электронной почты»
я смог войти в систему с провайдером Google за тот же адрес электронной почты, который уже был зарегистрирован через провайдера электронной почты, так что провайдер Google заменил провайдера электронной почты и последний затем не удается войти в систему с FirebaseAuthInvalidCredentialsException: Пароль недействителен или у пользователя нет пароля..
Шаги для воспроизведения:
Вход с провайдером электронной почты -> Выйти -> Вход через провайдера Google -> Выйти
В основном он не должен позволять заменять одного провайдера другим и бросать FirebaseAuthUserCollision Исключение: адрес электронной почты уже используется другой учетной записью.
код, который я использую для знака/Выход:
public void signUpEmail(String email, String password) {
mFirebaseAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, task -> {
if (!task.isSuccessful()) {
Log.e("signUpWithEmail", task.getException());
}
});
}
private void firebaseAuthWithGoogle(GoogleSignInAccount acct) {
AuthCredential credential = GoogleAuthProvider.getCredential(acct.getIdToken(), null);
mFirebaseAuth.signInWithCredential(credential)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override public void onComplete(@NonNull Task<AuthResult> task) {
if (!task.isSuccessful()) {
Log.e("signInWithCredential", task.getException());
}
}
});
}
public void signInEmail(String email, String password) {
mFirebaseAuth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this, task -> {
if (!task.isSuccessful()) {
Log.e("signInWithEmail", task.getException());
}
});
}
public void signOut() {
Auth.GoogleSignInApi.signOut(mGoogleApiClient);
mFirebaseAuth.signOut();
startSignInActivity();
}
Спасибо!
Многое могло бы зависеть от кода здесь. Что-нибудь минимальное, но полное, что вы можете поделиться? –
Добавлен код и несколько пояснений. –