Я расскажу всю историю вашего кода.
Вы проверяете существующего пользователя до регистрации.
а как получить идентификатор авторизации firebase перед регистрацией? Вы получите идентификатор авторизации после регистрации, тогда только вы можете проверить эти правила.
// Checks auth uid equals database node uid
// In other words, the User can only access their own data
{
"rules": {
"posts": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
если вы хотите проверить пользователей, вам нужно изменить свои правила, как здесь
{
"rules": {
"posts": {
"$uid": {
".read": true,
".write": "$uid === auth.uid"
}
}
}
}
но я думаю, что это плохой пример, когда вы используете firebase auth. вам не нужно проверять существующих пользователей в firebase auth. Аутентификатор firebase проверит это за вас. и выдает ошибку, если пользователь уже зарегистрирован
вот пример кода, вы можете изменить его
private void signUpInFirebaseAuth(String email, String password) {
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
// Sign up success, update UI with the signed-up user's information
Log.d(TAG, "createUserWithEmail:success");
FirebaseUser user = mAuth.getCurrentUser();
if (user != null) {
saveUserCredentials(user.getUid(), password, email);
}
updateUI(user);
} else {
// If sign up fails, display a message to the user.
Log.e(TAG, "createUserWithEmail:failure", task.getException());
//Toast.makeText(UserRegistrationActivity.this, "Sign Up Failed!: "+task.getException().getMessage(), Toast.LENGTH_LONG).show();
updateUI(null);
}
}
});
}