这是我第一次使用firebase,当我尝试检索数据时,我无法使用它。
我已经实现了firebase的授权并使用了它,现在可以从任何控制器(下面的检查控制器)查看用户的数据,但是当我尝试从数据库中检索数据时,我收到此错误:
permission_denied at /: Client doesn't have permission to access the desired data.
我关于Feed的数据库规则是:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
如果我将它们公之于众,我就可以获得数据,但我不想这样做,我在网上找不到任何关于如何发送用户ID以从firebase获取数据的文档。 / p>
我的控制器:
.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 :(得分: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");
}
});