gpt4 book ai didi

swift - 用户已在应用程序和 Firebase 实时数据库中通过身份验证返回失败 : permission_denied

转载 作者:搜寻专家 更新时间:2023-10-31 22:24:11 27 4
gpt4 key购买 nike

我正在写入数据库并尝试读取它,它总是说:失败:使用来自 Firebase 的用户规则时 permission_denied。我正在尝试从 Firebase 写入和读取以写入名字和姓氏。树布局如下。用户登录第一个 Storyboard,读写在不同的 Storyboard和 View Controller 上。

我是否需要在尝试获取信息的同一 VC 上进行身份验证?

我能够在不同的 VC 上生成 UserID,所以我不知道当时可以做什么。

WRITE
ref?.child(userID).child("FirstName").setValue(firstName.text!)
READ
if let snap = snapshot.value as? [String : AnyObject] {
if let firstNameResult = snap["FirstName"] as? String {
self.firstNameLabel.text = firstNameResult
}else{
print("Error")
}
}else{
print("User ID is not valid")
}
FIREBASE RULES
{
"rules": {
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}
TREE LAYOUT
IdentificationStorage
USERID generated
FirstName
LastName

--修复以供阅读--以下是读取的工作原理,写入仅使用下面提供的代码 Ken 即可!

let ref = Database.database().reference().child("users/\(userID)")
ref.observeSingleEvent(of: .value, with: { snapshot in

guard snapshot.exists() else { return print("Invalid User ID") }
self.firstNameLabel.text = snapshot.get("FirstName") as? String

guard snapshot.exists() else { return print("Invalid User ID") }
self.lastNameLabel.text = snapshot.get("LastName") as? String
})

}

最佳答案

你的规则是正确的,唯一的问题是当写入你的数据库时,你需要说 userIDusers 节点下。请记住像这样初始化您的数据库:

let ref = Database.database().reference()

这是您更新后的WRITE代码:

ref.child("users/\(userID)/FirstName").setValue(firstName.text!)

就个人而言,我喜欢为 DataSnapshot 创建一个扩展,以便更轻松地获取字段:

extension DataSnapshot {
func get(_ field: String) -> Any? {
return (value as? [String : Any])?[field]
}
}

只需将其复制并粘贴到 ViewController 之外的任何位置。使用此函数,您可以将 READ 代码重构为:

guard snapshot.exists() else { return print("Invalid User ID") }
self.firstNameLabel.text = snapshot.get("FirstName") as? String

作为旁注,Firebase 字段的惯例是小驼峰命名,就像 Swift 中的变量一样。

关于swift - 用户已在应用程序和 Firebase 实时数据库中通过身份验证返回失败 : permission_denied,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55929743/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com