首次使用Firebase处理新项目,并在包含验证规则时写入活动事件时收到权限被拒绝消息。Firebase数据验证失败
验证规则如下:
"activity": {
".read": "auth != null",
".write": "auth != null",
".validate": "newData.hasChildren(['user'])",
".indexOn": ["when"]
}
在一个新的活动事件,我推新的项目,抢令牌ID,并使其(现在)的推数据部分。当在调试中看到这个(使用自定义令牌认证系统)时,这就是我所看到的。被推送的json有一个“user”条目,它是auth用户的GUID,所以我不确定它为什么失败。我分开了json文本。
utility.js (line 1675)
FIREBASE: Attempt to write {
"id":"-K4oomuOpaY4K2aGUYZA",
"imp":false,
"text":"xxx.",
**"user":"0648480c-xxx"**,
"when":1449363973059
} to /activity/## with auth={"uid":"0648480c-xxx","name":"Greg Merideth"}
/activity:.write: "auth != null" => true
/activity:.validate: "newData.hasChildren(['user'])" => false
FIREBASE: Validation failed. firebase.js (line 195)
FIREBASE: Write was denied firebase.js (line 195)
我甚至试图将规则更改为“.validate”:“newData.hasChild('user')”具有相同的最终结果。
是新数据看入站数据包还是我的“auth”数据包?
更新(从注释)
增加一个新项目的调用一个函数传入fbActivity处理程序,然后调用:
var message = fbActivity.push({
id: user.fn(),
text: t.val(),
imp: false,
user: user.uid(),
when: new Date().getTime()}
推新条目。我们没有使用fb.timestamp,因为我们的服务器在fb之后运行3秒,所以我们的时间戳出奇怪的。
交叉帖子:https://groups.google.com/forum/#!topic/firebase-talk/a53ya-tVf80 –
我在下面添加了最可能的答案。如果不是这样,请添加您用于写入数据的代码。没有这一点,就不可能确定什么是错的。 –
添加一个新项目调用传入fbActivity处理函数的函数,然后调用: var message = fbActivity.push({id:user.fn(),text:t.val(),imp:false,user :user.uid(),when:new Date()。getTime()} 要推新条目,我们没有使用fb.timestamp,因为我们的服务器在fb之后运行3秒,所以我们的时间戳出奇怪的 –