firebase在运行程序时权限

时间:2017-05-03 15:17:28

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

我有一个问题,我在网上搜索并找到了一个答案,但它对我不起作用。我有一个应用程序,用户可以发布图像和所有发布图像加载的馈送。我一直在输出中得到permission_denied错误的一个问题。我很困惑,当我查找答案时,我得到的只是尝试ref.removeAllObservers,但我的代码已经有了这个。这是我的代码,请查看:

 func fetchPosts () {
    let ref = FIRDatabase.database().reference()
    ref.child("posts").queryOrderedByKey().observeSingleEvent(of: .value, with: { snapshot in
        let postSnap = snapshot.value as! [String: AnyObject]
        for (_,post) in postSnap {

            let posst = Post()
            if let author = post["author"] as? String, let pathToImage = post["pathToImage"] as? String, let postID = post["postID"] as? String {
                posst.author = author
                posst.pathToImage = pathToImage
                posst.postID = postID
                self.posts.append(posst)
            }

                self.postTableView.reloadData()

        }


    })
ref.removeAllObservers()
}

如果您有答案,请告诉我。这里还有输出:

  

2017-05-03 08:06:31.771 Postflur [21064] [Firebase /数据库] [I-RDB03812]听众/帖子失败:permission_denied

1 个答案:

答案 0 :(得分:1)

很高兴听到你已经解决了(我在评论部分看到了它),但我还是想写这个答案,因为我在过去遇到了类似的问题。 因此,默认情况下,firebase数据库只能由经过身份验证的用户读取/写入(如果您查看firebase控制台中的规则,您将找到以下内容):

  {
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

因此,要让未经过身份验证的用户读/写数据,您应该将规则更改为以下

{
  "rules": {
    ".read": true,
    ".write": true
  }
}

这是我的解决方案。