2017-03-07 86 views
1

這是我第一次使用firebase,當我嘗試檢索數據時,我無法使其工作。permission_denied at /:客戶端沒有訪問所需數據的權限

我已經實現了火力的授權,並用它,現在可以從任何控制器看到用戶的數據(檢查下面的控制器),但是當我試圖從數據庫中檢索數據我得到這個錯誤:

permission_denied at /: Client doesn't have permission to access the desired data.

關於進我的數據庫規則是:

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

如果我讓他們公開它的工作原理,我得到的數據,但我不想這樣做,我不能在網上找到任何文件關於如何發送用戶ID從Firebase獲取數據。

我的控制器:

.controller('homeCtrl', ['$scope','$firebaseObject','currentAuth', 
    function($scope,$firebaseObject,currentAuth) { 

     console.info('currentAuth',currentAuth); // This returns the needed info about the current user including the uid 

     // This is where I get the permission denied error. 
     var ref = firebase.database().ref(); 
     // download the data into a local object 
     $scope.data = $firebaseObject(ref); 
}]); 

任何幫助表示讚賞,感謝。

回答

0

看起來用戶在附加偵聽器時未經過身份驗證。像你這樣記錄用戶並不是一個好的指標,因爲瀏覽器的開發工具會顯示更新後的currentAuth值。如果您改爲登錄console.info('uid',currentAuth.uid),您可能會看到它是null

一旦用戶通過身份驗證,您應該只附加您的偵聽器。從AngularFire documentation

$scope.authObj.$onAuthStateChanged(function(firebaseUser) { 
    if (firebaseUser) { 
    console.log("Signed in as:", firebaseUser.uid); 
    var ref = firebase.database().ref(); 
    $scope.data = $firebaseObject(ref); 
    } else { 
    console.log("Signed out"); 
    } 
}); 
+0

感謝弗蘭克,當我打印出來currentAuth.uid它不是空它給我的用戶的價值,並在日誌中該出現的錯誤出現之前。 我現在正在獲取的uid的值是wJMkHNMDcmMz2syU9gakwYevC7J2 –

+0

我還在發佈此問題之前從文檔中添加了onAuthStateChanged,並且我嘗試在其中添加firebaseObject,但仍然收到相同的錯誤。 –

+0

嗯....我不知道是什麼導致了錯誤。但是很明顯:當你無法訪問數據時,你正試圖讀取/寫入數據。我沒有看到這個信息很長一段時間是錯誤的。你可以在jsbin中重現它嗎? –

相關問題