我正在为我的应用程序设置用户注册,并且注册本身运行良好。就像电子邮件和密码保存在我的 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 回答
犯罪嫌疑人X
TA贡献2080条经验 获得超4个赞
我使用了 task.getException() 并且异常是“权限被拒绝”
这意味着您没有通过 Firebase 的身份验证。您可以将 Firebase 规则向所有人开放:
{
"rules": {
".read": true,
".write": true
}
}
这对于安全来说不是一个好主意。
默认情况下,对数据库的读写访问受到限制,因此只有经过身份验证的用户才能读取或写入数据。要开始而不设置身份验证,您可以配置公共访问规则。这确实使您的数据库对任何人开放,即使是不使用您的应用程序的人,因此在设置身份验证时一定要再次限制您的数据库。 https://firebase.google.com/docs/database/android/read-and-write
或者,通过登录用户对注册用户进行身份验证,然后setValue()
在数据库上执行您的或任何操作。
阅读:Android Firebase 使用电子邮件和密码登录
和样品。
添加回答
举报
0/150
提交
取消