我在将数据显示到Firebase时遇到问题
这是我的RegisterActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
mAuth= FirebaseAuth.getInstance();
progressDialog = new ProgressDialog (this);
registerName = (TextInputLayout) findViewById(R.id.user_name_register);
registerEmail = (TextInputLayout) findViewById(R.id.user_email_register);
registerPassword = (TextInputLayout) findViewById(R.id.user_password_register);
btnAlreadyhaveaccount = (Button) findViewById(R.id.btn_alreadyhaveaccount);
btnCreateaccount = (Button) findViewById(R.id.btn_create);
btnCreateaccount.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = registerName.getEditText().getText().toString();
String email = registerEmail.getEditText().getText().toString();
String password = registerPassword.getEditText().getText().toString();
if(!TextUtils.isEmpty(name)||!TextUtils.isEmpty(email)||!TextUtils.isEmpty(password))
{
progressDialog.setTitle("Creating");
progressDialog.setMessage("Please wait !!!");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
register_user (name,email,password);
}
}
});
}
private void register_user(final String name, String email, String password) {
mAuth.createUserWithEmailAndPassword(email, password).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if(task.isSuccessful())
{
FirebaseUser current_user = FirebaseAuth.getInstance().getCurrentUser();
String uid = current_user.getUid();
mDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(uid);
HashMap<String,String> userMap = new HashMap<>();
userMap.put("name",name);
userMap.put("status","status");
userMap.put("image","default");
mDatabase.setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
progressDialog.dismiss();
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
}
});*/
}
else
{
progressDialog.hide();
Toast.makeText(RegisterActivity.this, "Error . Please check the form and try again ", Toast.LENGTH_SHORT).show();
}
}
});
}
我已连接到FireBase并进行了检查。我注册时的数据可以在Authentication中看到,但在Database中为空
在我的应用程序中,然后我注册,它仅显示“对话框创建”,但无法完成
当我删除有关数据库的所有代码时,就像这样,它变得正常,对话框运行然后快速结束
if(task.isSuccessful())
{
progressDialog.dismiss();
Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
else
{
progressDialog.hide();
Toast.makeText(RegisterActivity.this, "Error . Please check the form and try again ", Toast.LENGTH_SHORT).show();
}
我重新启动了Firebase,重建了我的应用程序,注销了Firebase然后再次登录并再次连接,仍然无法解决问题
在这里登录
D/FirebaseAuth: Notifying id token listeners about user ( FddFnHAN5NeH2Wv0vVGt9zolL8n1 ).
Notifying auth state listeners about user ( FddFnHAN5NeH2Wv0vVGt9zolL8n1 ).
D/FirebaseApp: Notifying auth state listeners.
Notified 0 auth state listeners.
W/RepoOperation: setValue at /Users/FddFnHAN5NeH2Wv0vVGt9zolL8n1 failed: DatabaseError: Permission denied
最佳答案
失败:DatabaseError:权限被拒绝
您的数据库规则未设置为公共规则或未针对经过身份验证的用户设置,请将其设置为两个规则之一以进行写入/读取
对于未经身份验证的用户
{
"rules": {
".read": true,
".write": true
}
}
对于经过身份验证的用户
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}