2016-10-27 6 views
2

私はこのコードでFirebaseデータベースからユーザーをフェッチしようとしているが、私はFirebase - 許可拒否フェッチユーザー

はエラーエラードメインは=コード= 1「アクセス許可が拒否されました」をcom.firebaseキャンセルこのエラーが出ますUserInfo = {NSLocalizedDescription =アクセス許可が拒否されました}

ルールはどのように設定する必要がありますか?

は、ここでは、コードです:

FIRDatabase.database().reference().child("users").observe(.childAdded, with: { (snapshot) in 

     print("snapshot \(snapshot)") 
     //all users right here n shyt 
     if let dictionary = snapshot.value as? [String: AnyObject] { 
      let user = User() 

      //class properties have to match up with firebase dictionary names 
      user.setValuesForKeys(dictionary) 
      self.users.append(user) 


      DispatchQueue.main.async { 
       self.messageTable.reloadData() 
      } 
     } 
      print(snapshot) 

     }, withCancel: { (error) in 
      print("cancel error \(error)") 
    }) 

これは私のFirebaseのルールです:あなたが唯一の自ノードのみにアクセスするには、現在のユーザーに権限を与えているあなたの現在のセキュリティルールを考える

{ 
"rules": { 
"users": { 
    "$uid": { 
    ".read": "$uid === auth.uid", 
    ".write": "$uid === auth.uid" 
    } 
} 
} 
} 
+1

あなたは間違いなく読むかどうかを検出するために 'withCancel'にコードを配置したいと思いますキャンセルされます。 http://stackoverflow.com/documentation/firebase/5548/how-do-i-listen-for-errors-when-accessing-the-database/24788/detect-errors-when-reading-data-on-iosを参照してください。 #t = 201610271759080332703 –

+0

最小のJSONツリー構造も与えてください。 – Dravidian

+0

私はフランクがやったことを言って、エラーを取り消してエラーを返しました。エラードメイン= com.firebaseコード= 1 "Permission Denied" UserInfo = {NSLocalizedDescription = Permission Denied} " – user3462448

答えて

3

あなたが移動したい動的なものは、他のユーザーと共有したいと考える詳細が含まれている別の親ノードを作成してみてください。

users:{ 
userID1 : {../*PERSONAL DETAILS*/}, 
userID2 : {../*PERSONAL DETAILS*/}, 
userID3 : {../*PERSONAL DETAILS*/}, 
userID4 : {../*PERSONAL DETAILS*/}, 
userID5 : {../*PERSONAL DETAILS*/}, 
.... 
    }, 
USERS_INFO: { 
    userID1 : {../*Details to share*/}, 
    userID2 : {../*Details to share*/}, 
    userID3 : {../*Details to share*/}, 
    userID4 : {../*Details to share*/}, 
    userID5 : {../*Details to share*/}, 
    .... 
    } 

とするセキュリティルールを更新します -

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

クエリのように: -

FIRDatabase.database().reference().child("USERS_INFO").observe(.childAdded, with: { (snapshot) in 
+0

これは修正済みです!ありがとうございました! – user3462448

関連する問題