Firebase 用户注册问题

我正在为我的应用程序设置用户注册,并且注册本身运行良好。就像电子邮件和密码保存在我的 Firebase 身份验证部分一样,但我正在尝试使其同时存储用户名。我拥有的代码对我来说似乎很好,但它不会在我的 Firebase 中创建一个包含任何已保存用户信息(如用户名)的数据库。


这是我用来注册用户的代码。


        firebaseAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {

        @Override

        public void onComplete(@NonNull Task<AuthResult> task) {

            if (task.isSuccessful()) {

                //start profile activity here


                User user = new User(username, email);


                FirebaseDatabase.getInstance().getReference("Users")

                        .child(FirebaseAuth.getInstance().getCurrentUser().getUid())

                        .setValue(user).addOnCompleteListener(new OnCompleteListener<Void>() {

                    @Override

                    public void onComplete(@NonNull Task<Void> task) {

                        if (task.isSuccessful()) {

                                    Toast.makeText(RegisterActivity.this, "Registration successful.", Toast.LENGTH_SHORT).show();

                                    startActivity(new Intent(RegisterActivity.this, HomePage.class ));

                                } else {

                                    Toast.makeText(RegisterActivity.this, "Database not created", Toast.LENGTH_SHORT).show();

                                }

                            }

                        });

            } else {

                Toast.makeText(RegisterActivity.this, "Registration not successful, please try again.", Toast.LENGTH_SHORT).show();

                progressDialog.hide();

            }

        }

    });

当我尝试注册一个帐户时,它说“未创建数据库”,所以我知道 task.isSuccessful() 不是真的,我不确定为什么会这样。


有什么帮助吗?


月关宝盒
浏览 160回答 2
2回答

慕运维8079593

将规则更改为:{&nbsp;"rules": {&nbsp; &nbsp;".read": true,&nbsp; &nbsp;".write": true&nbsp; }}

犯罪嫌疑人X

我使用了 task.getException() 并且异常是“权限被拒绝”这意味着您没有通过 Firebase 的身份验证。您可以将 Firebase 规则向所有人开放:{&nbsp;"rules": {&nbsp; &nbsp;".read": true,&nbsp; &nbsp;".write": true&nbsp; }}这对于安全来说不是一个好主意。默认情况下,对数据库的读写访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。要开始而不设置身份验证,您可以配置公共访问规则。这确实使您的数据库对任何人开放,即使是不使用您的应用程序的人,因此在设置身份验证时一定要再次限制您的数据库。&nbsp;https://firebase.google.com/docs/database/android/read-and-write或者,通过登录用户对注册用户进行身份验证,然后setValue()在数据库上执行您的或任何操作。使用signInWithEmailAndPassword。阅读:Android Firebase 使用电子邮件和密码登录和样品。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java