我正在尝试使用此代码从Firebase数据库中获取用户,但我收到此错误 cancel error Error Domain=com.firebase Code=1 “Permission Denied” UserInfo={NSLocalizedDescription=Permission Denied} 我的规则应该如何建立?
cancel error Error Domain=com.firebase Code=1 “Permission Denied” UserInfo={NSLocalizedDescription=Permission Denied}
我的规则应该如何建立?
这是代码:
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" } } } }根据您当前的安全规则,您只允许当前用户访问其自己的节点.
如果那是您想要的动态,请尝试创建另一个父节点,其中包含您希望与其他用户共享的详细信息.
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