我得到我的应用程序与读取和写入与广泛开放的权限,现在我锁定它。我的应用程序不会读取或写入。尽管Firebase规则模拟器说我的规则对于已通过成功的Firebase signInWithProvider
的UID获得的Facebook身份验证用户可以正常使用,但我仍然获得了权限被拒绝的错误。我错过了什么?获取权限被拒绝读取和写入
{
"rules": {
"items": {
"$uid": {
// user must match the authenticated user
".read": "auth.uid == $uid",
".write": "auth.uid == $uid"
}
}
}
}
这是我的数据结构:
my-firebase-app
-items: {
-<uid123> : [
{label:'apple'},
{label:'banana'}
]
-<uid456> : [
{label:'pear'},
{label:'cherry'}
]
}
- 我做登录火力Facebook的身份验证后,
firestack.auth.signInWithProvider(provider, facebookAccessToken, '')
,这给了我,包括UID - 我推到
/items/uid123
和我的用户对象获取物品ID,333
- 我在处为新ID(333)设置了
/items/uid123/333
- 我订阅项目的集合在
/items/uid123
通过网络SDK这样做:itemsRef.child(uid).on('value', (snapshot) => .....
我的组呼的样子,
const newPostRef = itemsRef.child(uid).push(); newPostRef.set(itemWithID)
set
承诺得到许可否认拒绝错误。
上述所有做工精细的东西,如果我的.read
和.write
被简单地设置true
这使我想起我的语法或结构是DEF规则毗邻。会喜欢一些输入。
请分享触发问题的最小代码。 –
谢谢@FrankvanPuffelen,我已更新我的问题,更详细 –
我仍然不明白哪个代码触发了问题。它是''on()'触发'permission denied'吗?另请注意,我们无法看到身份验证如何在此流动。您可以分享[单个代码段(运行时)触发错误](http://stackoverflow.com/help/mcve),而不是您想如何执行的项目符号列表。如果您尝试在jsbin中重现问题可能会有所帮助(但这意味着必须在没有堆叠的情况下进行重现)。 –