我按照教程here的说明进行操作。唯一的区别是我将订阅和发送通知分成两个不同的页面。这是Subscribe Page,这里是Dashboard。
问题是在用户成功订阅并且我尝试在仪表板中推送通知之后,我收到错误
FIREBASE WARNING: set at /notifications/-L6ZAsl77V-patpjL8vT failed: permission_denied
但是将它与tutorial/demo进行比较,没有错误,并且消息被推送通过最终用户。
有任何想法吗?
数据库安全规则:
{
"rules": {
"tokens": {
".indexOn": ["uid", "token"],
".read": "auth != null",
".write": "auth != null",
"$token": {
".validate": "newData.hasChildren(['uid', 'token']) && newData.child('uid').val() == auth.uid"
}
},
"notifications": {
".read": "auth != null",
".write": "auth != null",
"$notification": {
".validate": "newData.hasChildren(['user', 'message', 'userProfileImg'])"
}
}
}
}
这是一个愚蠢的错误。我认为演示和我自己之间的比例是1:1。
在我的一个JS文件中,它假设调用/notifications
,我删除了user
和userProfileImg
而没有更新database.rule.json
中的规则。它仍然是:
"$notification": {
".validate": "newData.hasChildren(['user', 'message', 'userProfileImg'])"
}
当我从json文件中删除'user'
和'userProfileImg'
时,一切都恢复了。