繁体   English   中英

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

[英]Firestore Database Registration Failed Permission Denied But Actually Successfully Registers

所以我的数据库有一个相当模糊的问题。 一切正常,只要我注册或有人在我的应用程序上注册,就会显示“注册成功”消息。 弹出。

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

它声称注册失败,但该帐户已成功注册。 我已经用另外 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 后,应用程序可以完美运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM