java - Firestore数据库注册失败权限被拒绝但实际上注册成功

标签 java android database android-studio nosql

所以我的数据库有一个相当模糊的问题。一切工作正常,每当我注册或有人在我的应用程序上注册时,都会显示“注册成功!”的消息。弹出窗口。

我每天都在更新我的代码,并致力于更改应用程序和数据库中的内容。今天在注册测试用户时,我收到了这条消息 - this message popped up

它声称注册失败,但帐户已成功注册。我已经用另外 3 个帐户对此进行了测试。相同的消息 - 然而,注册实际上已成功,并且用户可以使用其详细信息登录。

我还没有编码这个异常。我已经编码了异常,例如密码太短、注册失败、没有互联网等,但我从未创建过权限检查。我认为 Permission Denied 来自 +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();
                        }
                    });

        }
    });

最佳答案

我实际上实现了两个数据库。一个将保存用户群广告,一个将保存价格和位置数据。

但是我忘记了,经过一定时间后,读写权限会自动设置为false。

几周前收到通知时,我将主数据库的读写权限改回 true,但忘记了第二个权限。

我检查了第二个,权限设置为 false,因此注册失败,即使我可以注册,权限也被拒绝。

将它们更改回 true 后,应用程序可以完美运行。

关于java - Firestore数据库注册失败权限被拒绝但实际上注册成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61142397/

相关文章:

database - 为什么 Django 不从模型创建完整表?

java - reduce() 不适用于 lightcouch

java - 未引用的方法是否包含在最终的可执行文件中?

Android - strings.xml 无法转义单引号

sql - 通过游标将主键值插入另一个表

php - 加入表后不从数据库中检索行

java - 是否可以使用具有纳秒值的 Jackson

java - ... 不是访问器方法

java - 同一列上的多个复合唯一约束

android - 获取我的主屏幕小部件的大小