2017-05-03 24 views
0

我遇到了一個問題,我搜索了網頁,發現真的只有一個答案,它不適合我。我有一個應用程序,用戶可以在其中發佈圖片和所有發佈的圖片加載給他們。我一直在輸出中得到permission_denied的錯誤。我很困惑,當我查找這個答案時,我所得到的只是嘗試ref.removeAllObservers,但我的代碼已經有了。這裏是我的代碼,看看:運行程序時firebase permission_denied

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年5月3日08:06:31.771 Postflur [21064] [火力地堡/數據庫] [I-RDB03812]聆聽者/職位失敗:PERMISSION_DENIED

+0

您試圖從firebase發佈/獲取時是否遇到此問題?或者只是在這個特定的情況下? –

+0

嗯我想我解決了它,我需要將myCheckLogin從viewdidload更改爲viewwillppear,因爲沒有人登錄,它不提供註銷vc。 –

回答

1

好聽說你已經解決了這個問題(我在評論部分閱讀過),但我仍然想寫這個答案,因爲我過去遇到類似的問題。 因此在默認情況火力數據庫通過身份驗證的用戶只可讀/寫的(如果你在你的火力控制檯內部規則,看看你會發現以下):

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

所以讓一個非認證用戶的讀/寫數據您應該將規則更改爲以下內容

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

這是我的解決方案。