UID пользователя аутентификации Firebase как дочерний узел в базе данных реального времени - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь создать в моей базе данных реального времени папку с именем «users», уникальным идентификатором которой является UID, создаваемый Firebase.

Этот код работал несколько месяцев go. Но это больше не так. Честно говоря, я сделал так много изменений, я не знаю, было ли это что-то, что я удалил ... Но я не могу найти, что не так. Пользователь создается, но внутри «пользователи» в моей базе данных реального времени ничего не пишется.

                auth.createUserWithEmailAndPassword(email, password)
                    .addOnCompleteListener(SignUpActivity.this, new OnCompleteListener<AuthResult>() {
                        @Override
                        public void onComplete(@NonNull Task<AuthResult> task) {
                            auth.signInWithEmailAndPassword(inputEmail.getText().toString(),inputPassword.getText().toString());
                            Toast.makeText(SignUpActivity.this, "createUserWithEmail:onComplete:" + task.isSuccessful(), Toast.LENGTH_SHORT).show();
                            progressBar.setVisibility(View.GONE);
                            // If sign in fails, display a message to the user. If sign in succeeds
                            // the auth state listener will be notified and logic to handle the
                            // signed in user can be handled in the listener.
                            if (!task.isSuccessful()) {
                                Toast.makeText(SignUpActivity.this, "Authentication failed." + task.getException(),
                                        Toast.LENGTH_SHORT).show();
                            } else {
                                auth.signInWithEmailAndPassword(inputEmail.getText().toString(),inputPassword.getText().toString());
                                FirebaseUser firebaseUser = auth.getCurrentUser();
                                String userid = firebaseUser.getUid();
                                final User newuser = new User(signupInputUsername.getText().toString().trim(), inputEmail.getText().toString().trim(), inputPassword.getText().toString().trim(),
                                        gender.getText().toString().trim(), age.getText().toString().trim());
                                mDatabase.child("users").child(userid).setValue(newuser);
                                startActivity(new Intent(SignUpActivity.this, UserActivity.class));
                                finish();
                            }
                        }
                    });

 @IgnoreExtraProperties
public static class User {

    public String username, inputEmail, inputPassword, gender, age;

    public User() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public User(String username, String inputEmail, String inputPassword, String gender, String age) {
        this.username = username;
        this.inputEmail = inputEmail;
        this.inputPassword = inputPassword;
        this.gender = gender;
        this.age = age;
    }

}

1 Ответ

1 голос
/ 18 апреля 2020

посмотрите на следующий код, взятый из вашего кода

mDatabase.child("users").child(userid).setValue(newuser);
startActivity(new Intent(SignUpActivity.this, UserActivity.class));
finish();

метод .setValue фактически дает вам задачу, не являющуюся пустой функцией, поэтому вы должны присоединить к ней слушателя и посмотреть, если задача было выполнено.

, если это работало до того, как это все еще было проблемой в вашем коде.

Более того, ищите правила БД, если они в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...