为了账号安全,请及时绑定邮箱和手机立即绑定

Firebase 用户注册问题

Firebase 用户注册问题

月关宝盒 2021-11-24 15:17:27
我正在为我的应用程序设置用户注册,并且注册本身运行良好。就像电子邮件和密码保存在我的 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() 不是真的,我不确定为什么会这样。有什么帮助吗?
查看完整描述

2 回答

?
慕运维8079593

TA贡献1876条经验 获得超5个赞

将规则更改为:


{

 "rules": {

   ".read": true,

   ".write": true

  }

}


查看完整回答
反对 回复 2021-11-24
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

我使用了 task.getException() 并且异常是“权限被拒绝”

这意味着您没有通过 Firebase 的身份验证。您可以将 Firebase 规则向所有人开放:

{

 "rules": {

   ".read": true,

   ".write": true

  }

}

对于安全来说不是一个好主意

默认情况下,对数据库的读写访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。要开始而不设置身份验证,您可以配置公共访问规则。这确实使您的数据库对任何人开放,即使是不使用您的应用程序的人,因此在设置身份验证时一定要再次限制您的数据库。 https://firebase.google.com/docs/database/android/read-and-write

或者,通过登录用户对注册用户进行身份验证,然后setValue()在数据库上执行您的或任何操作。

使用signInWithEmailAndPassword

阅读:Android Firebase 使用电子邮件和密码登录

样品


查看完整回答
反对 回复 2021-11-24
  • 2 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信