我的应用正在使用Firebase的Facebook身份验证,我有以下用户集合:
{
"fsdjf34hf98wjefj" : {
"uid" : "facebook:543634634536"
},
"3298djwhy9hwd34234" : {
"uid" : "facebook:7658899965432"
}
}
我正在尝试限制访问权限,以便用户只能查看自己的用户:
{
"rules": {
".write": true,
"users": {
".read": "auth.uid === data.child('uid').val()",
}
}
}
尝试从JavaScript访问用户时出现以下错误:
错误:permission_denied:客户端无权访问 想要的数据。
是否有人知道 .read 部分的正确语法?我尝试了很多东西,但我似乎并没有掌握它背后的逻辑。
答案 0 :(得分:4)
假设您的收藏品是:
"users": {
"fsdjf34hf98wjefj" : {
"uid" : "facebook:543634634536"
},
"3298djwhy9hwd34234" : {
"uid" : "facebook:7658899965432"
}
}
您的规则必须是:
{
"rules": {
"users": {
"$user": {
".read": "auth.uid === data.child('uid').val()",
}
}
}
}
其中的$user
适用于每个用户节点。
请注意,解决此类问题的最简单方法是使用Firebase信息中心中的“模拟器”选项卡来模拟操作。它会准确地告诉你为什么允许/拒绝操作,而SDK(有意)只会告诉你 操作被拒绝。