簡體   English   中英

Firebase寫入權限被拒絕

[英]Firebase write permission denied

我無法弄清楚為什么firebase不會讓我做這個特定的寫。 我覺得我在模擬器中也是這樣做的,它可以在那里工作。 以下是本節的安全規則。

"joinRequests" : {
  "$clanid": {
    "$requesterid" : {
      ".read" : "$requesterid === auth.uid || root.child('clans/' + $clanid + '/members/' + auth.uid + '/admin').val() === true",
      ".validate": "newData.hasChildren(['request'])",
      "request" : {
        ".write" : "true",
        ".validate": "newData.hasChildren(['name', 'message'])",
        "name" : {
        ".validate": "newData.isString()"
        },
        "message" : {
          ".validate": "newData.isString()"
        },
        "$other": {
        ".validate": false
        }
      },
      "approved" : {
        ".write" : "root.child('clans/' + $clanid + '/members/' + auth.uid + '/admin').val() === true || ($requesterid === auth.uid  && !newData.exists())",
        ".validate": "newData.isBoolean()"
      },
      "$other": {
      ".validate": false
      }
    }
  }
},

在我的Android應用程序的代碼中,我運行以下兩行:

dataSnapshot.child("request").getRef().removeValue();
dataSnapshot.child("approved").getRef().removeValue();

我覺得奇怪的是它允許我刪除“已批准”值而不是“請求”值。 dataSnapshot是$ requesterid。 如果我在模擬器中運行此行並允許寫入:

/joinRequests/QV28VJYG/c1cef959-2dd3-4cab-8649-2b81892cffa6/request

我在android studio中得到的錯誤是這樣的:

W/RepoOperation: setValue at /joinRequests/QV28VJYG/qRlJt4UIAcRVIe9VXoYVBa68tO43/request failed: DatabaseError: Permission denied

我必須做一些愚蠢的事,但我無法想象它會是什么。 任何幫助都會很棒,謝謝。

newData是一個快照,表示操作發生后數據的外觀。

newData.hasChildren(['request'])告訴newData.hasChildren(['request'])在執行操作后確保request節點存在。 因此,禁止刪除此節點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM