簡體   English   中英

Firebase 實時數據庫狀態不工作

[英]Firebase Realtime Database Presence Not Working

從文檔中,我正在這樣做:

    var currentUser;
    firebase.auth().onAuthStateChanged(function(user) {
      if (user && user.emailVerified) {
        currentUser = user;
        setPresence();
      }
    });
    function setPresence() {
      var myConnectionsRef = firebase.database().ref('users/' + currentUser.uid + '/connections');
      var connectedRef = firebase.database().ref('.info/connected');
      connectedRef.on('value', function(snap) {
        if (snap.val() === true) {
          var con = myConnectionsRef.push();
          con.onDisconnect().remove();
          con.set("profile");
        }
      });
    }

我在每個頁面上都這樣做,但它似乎不適用於個人資料頁面。 這是我在數據庫中看到的: 在此處輸入圖像描述

這不是一次性的。 幾乎所有用戶都有類似的東西。 這可能是什么原因造成的? 為什么 onDisconnect 不會觸發?

如果需要,這里是網頁:magicconnects.com/profile。

非常感謝你的幫助!

編輯:添加安全規則:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null",
        ".write": "auth != null && auth.uid == $uid"
      }
    }
  }
}

問題似乎是令牌可能在onDisconnect代碼運行時已過期。 因此,您需要允許未經身份驗證刪除相關數據。

我能想到的最安全的方法是在各個連接節點(以-M...開頭的節點)的級別上執行此操作,以便只能通過知道密鑰來刪除節點。

看起來像這樣:

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth != null",
        ".write": "auth != null && auth.uid == $uid"
        "$pushid": {
          ".write": "!newData.exists()"
        }
      }
    }
  }
}

由於規則是“或”運算在一起的,因此".write": ".newData.exists()"是當有人知道$pushid時的額外津貼。

暫無
暫無

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

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