字段未出现在 Firebase Android Studio 的数据库中
Fields not appear in database of Firebase Android Studio
我在向 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 并进行了检查。我注册时的数据,我可以在身份验证中看到,但在数据库中它是空的
在我的应用程序中然后我注册,它只显示对话框创建但无法完成
当我删除所有关于数据库的代码时,像这样,它变得正常,对话框运行然后结束快速
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
failed: DatabaseError: Permission denied
您的数据库规则未设置为 public 或者对于经过身份验证的用户,将它们设置为两者之一以便 write/read
对于未通过身份验证的用户
{
"rules": {
".read": true,
".write": true
}
}
对于经过身份验证的用户
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
我在向 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 并进行了检查。我注册时的数据,我可以在身份验证中看到,但在数据库中它是空的
在我的应用程序中然后我注册,它只显示对话框创建但无法完成
当我删除所有关于数据库的代码时,像这样,它变得正常,对话框运行然后结束快速
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
failed: DatabaseError: Permission denied
您的数据库规则未设置为 public 或者对于经过身份验证的用户,将它们设置为两者之一以便 write/read
对于未通过身份验证的用户
{
"rules": {
".read": true,
".write": true
}
}
对于经过身份验证的用户
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}