【发布时间】:2018-01-23 02:44:34
【问题描述】:
我正在尝试从 Firebase 实时数据库中读取一些数据,但每次尝试时我都会收到数据库错误并显示权限被拒绝的消息。这是我用来读取数据的代码。
mAuth = FirebaseAuth.getInstance();
FirebaseUser currentUser = mAuth.getCurrentUser();
userId = currentUser.getUid();
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot ds : dataSnapshot.getChildren()) {
User user = new User();
user.setFullName(ds.child("users").child(userId).getValue(User.class).getFullName());
user.setEmail(ds.child("users").child(userId).getValue(User.class).getEmail());
Log.i("info", " User Full name" + user.getFullName());
userFullName.setText(user.getFullName());
userEmail.setText(user.getEmail());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
Log.i("Info", "" + databaseError.getMessage());
}
});
这些也是我的数据库规则
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
我想做什么?
- 我做了两件事,首先我将数据库规则设置为公开,但这对我不起作用,我做的第二件事是使用addValueEventListener 而不是使用addChildEventListener,但这也没有用。
所以如果有人知道我在哪里犯了错误,请与我分享。
提前致谢。
【问题讨论】:
-
那么,您是说 onCancelled() 回调正在被调用?当您“将数据库规则设置为公开”时,您到底做了什么?
-
你说“将数据库规则设置为公开”是什么意思?
-
我怀疑这取决于数据库规则,因为我说过我将它们设置为
{ "rules": { ".read": true, ".write": true } }但这对我没有帮助。
标签: android firebase firebase-realtime-database