Firebase не регистрирует новых пользователей - PullRequest
0 голосов
/ 17 февраля 2020

У меня проблема, я не могу зарегистрироваться в своем приложении чата. Это показывает мне, что «Вы не можете зарегистрироваться». Я не знаю, где проблема. Я установил чтение и запись в true в моей базе данных, но она все еще не работает. Я использую последние версии Firebase. У меня нет проблем с inte rnet и успешно подключил firebase к моему проекту.

Это мой регистр деятельности


    MaterialEditText username,  email, password;

    Button btn_register;

    FirebaseAuth auth;
    DatabaseReference reference;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_register);


        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Регистрация");
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        username = findViewById(R.id.username);
        email = findViewById(R.id.email);
        password = findViewById(R.id.password);
        btn_register = findViewById(R.id.btn_register);

        auth = FirebaseAuth.getInstance();

        btn_register.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String txt_username = username.getText().toString();
                String txt_email = email.getText().toString();
                String txt_password = password.getText().toString();

                if (TextUtils.isEmpty(txt_username)  || TextUtils.isEmpty(txt_email)  ||  TextUtils.isEmpty(txt_password)) {

                    Toast.makeText(RegisterActivity.this, "Write more", Toast.LENGTH_SHORT).show();
                } else if (txt_password.length() < 6 ){
                    Toast.makeText(RegisterActivity.this, "Password too short ", Toast.LENGTH_SHORT).show();
                } else {
                    register(txt_username, txt_email, txt_password);
                }

            }
        });
    }
    private void register(final String username, String email, String password){
        auth.createUserWithEmailAndPassword(email, password)
                .addOnCompleteListener(this, new OnCompleteListener<AuthResult>() {
                    @Override
                    public void onComplete(@NonNull Task<AuthResult> task) {
                        if (task.isSuccessful()){
                            FirebaseUser firebaseUser= auth.getCurrentUser();
                            assert firebaseUser !=null;
                            String userid = firebaseUser.getUid();

                            reference = FirebaseDatabase.getInstance().getReference("Users").child(userid);

                            HashMap<String, String> HashMap = new HashMap<>();
                            HashMap.put("id", userid);
                            HashMap.put("username", username);
                            HashMap.put("imageURL", "default");

                            reference.setValue(HashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                                @Override
                                public void onComplete(@NonNull Task<Void> task) {
                                    if(task.isSuccessful()){

                                        Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
                                        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                                        startActivity(intent);
                                        finish();
                                    }
                                }
                            });
                        }else {
                            Toast.makeText(RegisterActivity.this, "You cant register", Toast.LENGTH_SHORT).show();
                        }
                    }
                });
    }

}

Ответы [ 2 ]

0 голосов
/ 17 февраля 2020

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

String userid = firebaseUser.getUid();

reference = FirebaseDatabase.getInstance().getReference("Users").child(userid);

Вместо этого инициализируйте ссылку на узел Users

String userid = firebaseUser.getUid();

reference = FirebaseDatabase.getInstance().getReference("Users");

Затем при сохранении данных пользователя вы можете сохранить их userId:

reference.child(userid).setValue(HashMap).addOnCompleteListener(new OnCompleteListener<Void>() {
    ...
});
0 голосов
/ 17 февраля 2020

в файле манифеста разрешить inte rnet разрешение. если вы продолжите эту ошибку, создайте прослушиватель ошибок и напечатайте код ошибки

 Log.w(TAG, "createUserWithEmail:failure", task.getException());
                    Toast.makeText(EmailPasswordActivity.this, "Authentication failed.",
                            Toast.LENGTH_SHORT).show();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...