Android - Firebase规则读取权限问题

时间:2016-10-28 15:12:47

标签: android firebase firebase-realtime-database firebase-security

我需要有关Firebase读取规则的帮助。

这是我数据库的结构

db:{

user:{

  uid0:{
    name:"mario",
    lastname:"super"
  }

  uid1:{
    name:"bubu",
    lastname:"gogo"
  }

  uid1:{
    name:"fajio",
    lastname:"mkokd"
  }
}
}

我的规则:

{
 "rules": {

   "user":{
     "$uid":{
        ".read":"auth.uid === $uid", 
     }
   }

 }
 }  

使用规则模拟器,读取用户信息没有问题。

在我的活动中,我使用了具有用户名称的填充列表的回收站视图 我得到权限被拒绝。

问题是什么?怎么了?

这是我对填充列表的查询

Query query = FirebaseDatabase.getInstance().getReference().child("user");

编辑:

`10-28 17:28:22.680 8317-8387/com.scidaconnectpeople.www.scida W/SyncTree:     Listen at /user failed: DatabaseError: Permission denied
10-28 17:28:22.680 8317-8317/com.scidaconnectpeople.www.scida    W/FirebaseRecyclerAdapter: com.google.firebase.database.DatabaseException:     Firebase Database error: Permission denied
                                                                                             at com.google.firebase.database.DatabaseError.toException(Unknown Source)
                                                                                            at    com.firebase.ui.database.FirebaseRecyclerAdapter.onCancelled(FirebaseRecyclerAda   pter.java:199)
                                                                                         at com.firebase.ui.database.FirebaseRecyclerAdapter$1.onCancelled(FirebaseRecyclerAdapter.java:116)
                                                                                         at com.firebase.ui.database.FirebaseArray.notifyCancelledListeners(FirebaseArray.java:119)
                                                                                         at com.firebase.ui.database.FirebaseArray.onCancelled(FirebaseArray.java:99)
                                                                                         at com.google.android.gms.internal.zzaip.zza(Unknown Source)
                                                                                         at com.google.android.gms.internal.zzakn.zzcxi(Unknown Source)
                                                                                         at com.google.android.gms.internal.zzaks$1.run(Unknown Source)
                                                                                         at android.os.Handler.handleCallback(Handler.java:739)
                                                                                         at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                                         at android.os.Looper.loop(Looper.java:135)
                                                                                         at android.app.ActivityThread.main(ActivityThread.java:5538)
                                                                                         at java.lang.reflect.Method.invoke(Native Method)
                                                                                         at java.lang.reflect.Method.invoke(Method.java:372)
                                                                                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:958)
                                                                                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:753)`

2 个答案:

答案 0 :(得分:0)

由于google-services.json,您面临的问题很多。

请确认您已下载更新的json文件。

检查这些Docs

答案 1 :(得分:0)

Firebase数据库安全规则在您尝试附加查询的级别强制执行。由于您在/users上附加了查询,因此它会检查您是否具有读取权限。由于您没有/users的读取权限,因此会拒绝/取消查询。

对于Firebase新手来说,这通常是出乎意料的。我们将其称为“规则不是过滤器”,in the documentationhere on Stack Overflow