2017-03-07 15 views
1

これは私がfirebaseを初めて使用したときです。データを取得しようとすると動作しません。permission_denied /:クライアントに必要なデータへのアクセス権がありません

私はfirebaseの認可を実装し、それを使用して、今任意のコントローラからユーザーのデータを見ることができます(下のコントローラをチェックしてください)が、私は、私はこのエラーを取得し、データベースからデータを取得しようとしました:

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

おかげでフランク、私はプリントアウト、それはそれは私に、ユーザーの値を与えるnullではない、とエラーが来る前に、そのログで起動しますcurrentAuth.uid。 私が今取得しているuidの値は、wJMkHNMDcmMz2syU9gakwYevC7J2です。 –

+0

この質問を投稿する前に、ドキュメントからonAuthStateChangedを追加しました。そこにfirebaseObjectを追加しようとしましたが、同じエラーが発生しています。 –

+0

ええと....私は何が原因でエラーが発生しているのか分かりません。しかし、それはかなり明白です:あなたがそれにアクセスできないときにデータを読み書きしようとしています。私は長い間そのメッセージが間違っているのを見ていません。あなたはjsbinでそれを再現できますか? –

関連する問題