简体   繁体   English

Firebase - 获取用户时权限被拒绝

[英]Firebase - permission denied when fetching users

I'm trying to fetch users from a Firebase database with this code but I get this error 我正在尝试使用此代码从Firebase数据库中获取用户,但我收到此错误

cancel error Error Domain=com.firebase Code=1 "Permission Denied" UserInfo={NSLocalizedDescription=Permission Denied} 取消错误错误Domain = com.firebase Code = 1“Permission Denied”UserInfo = {NSLocalizedDescription = Permission Denied}

How should my rules be set up? 我的规则应该如何建立?

Here's the code: 这是代码:

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)")
    })

This is my rules in Firebase: 这是我在Firebase中的规则:

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

Given your current Security rules you are only giving permission to your current user to access only its own node. 根据您当前的安全规则,您只允许当前用户访问其自己的节点。

If thats the dynamic you want to go by try making another parent node which contains the details that you would wanna share with other users. 如果那是您想要的动态,请尝试创建另一个父节点,其中包含您希望与其他用户共享的详细信息。

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*/},
  ....
  }

And update your security rules to:- 并将您的安全规则更新为: -

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

Query like :- 查询如下: -

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM