Ошибка регистрации базы данных Firestore. Отказано в доступе, но фактически успешно регистрируется. - PullRequest
0 голосов
/ 10 апреля 2020

Так что у меня довольно неоднозначная проблема с моей базой данных. Все работало нормально, и каждый раз, когда я регистрировался или кто-то регистрировался в моем приложении, это приводило к появлению сообщения "Регистрация прошла успешно!" неожиданно возникнуть.

Я ежедневно обновляю свой код и работаю над изменением вещей в приложении и вокруг базы данных. Сегодня при регистрации тестового пользователя я получил это сообщение - this message popped up

В нем утверждается, что регистрация не удалась, но учетная запись была успешно зарегистрирована. И я проверил это еще с 3 учетными записями. То же сообщение - однако регистрация на самом деле прошла успешно, и пользователь может войти в систему со своими данными.

Я не кодировал это исключение. Я закодировал исключения, такие как слишком короткий пароль, регистрация не удалась, нет inte rnet, et c, но я никогда не создавал проверку прав доступа. Я думаю, что Отказано в доступе происходит от + e.getMessage ()? Мог ли я что-то изменить в правилах базы данных Firestorm?

Это мой код:

    private void showREGISTERnew() {
    final AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("REGISTER");
    dialog.setMessage("Please use email to register.");


    LayoutInflater inflater = LayoutInflater.from(this);
    View layout_login = inflater.inflate(R.layout.layout_login, null);

    final MaterialEditText editEmail = layout_login.findViewById(R.id.editEmail);
    final MaterialEditText editPassword = layout_login.findViewById(R.id.editPassword);


    dialog.setView(layout_login);

    //set btton

    dialog.setPositiveButton("REGISTER", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();

            //check validation

            if(TextUtils.isEmpty(editEmail.getText().toString())){
                Snackbar.make(rootLayout, "Please enter email address", Snackbar.LENGTH_SHORT)
                        .show();
                return;
            }



            if(TextUtils.isEmpty(editPassword.getText().toString())){
                Snackbar.make(rootLayout, "Please enter your password", Snackbar.LENGTH_SHORT)
                        .show();
                return;
            }

            if(editPassword.getText().toString().length() < 6){
                Snackbar.make(rootLayout, "Password too short.", Snackbar.LENGTH_SHORT)
                        .show();
                return;
            }



            //reg new user

            auth.createUserWithEmailAndPassword(editEmail.getText().toString(), editPassword.getText().toString())
                    .addOnSuccessListener(new OnSuccessListener<AuthResult>() {
                        @Override
                        public void onSuccess(AuthResult authResult) {
                            //save user to db
                            User user = new User();
                            user.setEmail(editEmail.getText().toString());

                            //user setphone
                            //user setname

                            user.setPassword(editPassword.getText().toString());
                            //use email to key
                            users.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
                                    .setValue(user)
                                    .addOnSuccessListener(new OnSuccessListener<Void>() {
                                        @Override
                                        public void onSuccess(Void aVoid) {
                                            Snackbar.make(rootLayout, "You have registered successfully.", Snackbar.LENGTH_SHORT)
                                                    .show();
                                        }
                                    })
                                    .addOnFailureListener(new OnFailureListener() {
                                        @Override
                                        public void onFailure(@NonNull Exception e) {
                                            Snackbar.make(rootLayout, "Registration failed."+e.getMessage(), Snackbar.LENGTH_SHORT)
                                                    .show();
                                        }
                                    });

                        }
                    })
                    .addOnFailureListener(new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            Snackbar.make(rootLayout, "Registration failed."+e.getMessage(), Snackbar.LENGTH_SHORT)
                                    .show();
                        }
                    });

        }
    });

1 Ответ

0 голосов
/ 16 апреля 2020

Я фактически реализовал две базы данных. Тот, который будет содержать пользовательскую базу, и тот, который будет содержать данные о цене и местоположении.

Однако я забыл, что через определенный промежуток времени разрешения на чтение и запись будут автоматически установлены на false.

Когда я получал уведомления за недели go, я изменил права доступа на чтение и запись на значение true в основной базе данных, но забыл о второй.

Я проверил вторую, и разрешения были установлены ложно, поэтому регистрация не удалась, отказано в разрешении, хотя я мог зарегистрироваться.

После возврата их в значение true приложение работает без сбоев.

...