... se non consentono più account con lo stesso e-mail indirizzo, un utente non può creare un nuovo account che i segni in utilizzando un account Google con l' indirizzo email [email protected] se esiste già un account che utilizza l'indirizzo e-mail [email protected] e una password .FirebaseAuthInvalidCredentialsException quando si utilizza "un account per ogni indirizzo e-mail"
sono stato in grado di accedere con provider di Google per la stessa email che è stato già registrato tramite provider di e-mail, in modo da fornitore Google sostituito fornitore di e-mail e quest'ultimo poi non riesce ad accedere con FirebaseAuthInvalidCredentialsException: La password è valida o la l'utente non ha una password..
Procedura per riprodurre:
Iscriviti con provider di e-mail -> Esci -> Accedi con provider di Google -> Esci
Fondamentalmente non dovrebbe permettere di sostituire un fornitore con un altro e lanciare FirebaseAuthUserCollision Eccezione: l'indirizzo email è già utilizzato da un altro account.
Alcuni codice che uso per Entra/Registrati out:
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();
}
Grazie!
Molto probabilmente dipenderebbe dal codice qui. Qualche cosa minima, ma completa, che puoi condividere? –
Aggiunto un po 'di codice e un paio di chiarimenti. –