我正在尝试将数据写入Firebase数据库,但是当我按下保存的按钮时,我仍然收到以下错误。
2016-12-02 11:09:42.548 StartupNow [1482:60415] [FirebaseDatabase] setValue:或removeValue:at / test / -KY-VpLZWbp4vjF3BpMk失败:permission_denied
我尝试过的事情:我确保在我的控制台中将.read和.write规则设置为true,重新连接我的savedButtonPressed按钮,并在函数中编写Firebase引用并在savedButtonPressed()方法中调用它。
额外资源这是我正在遵循的教程。 https://youtu.be/F42CzqIBxHQ?t=4m14s
var ref: FIRDatabaseReference?
override func viewDidLoad() {
super.viewDidLoad()
ref = FIRDatabase.database().reference()
}
@IBAction func saveButtonPressed() {
// TODO: Post data to Firebase
firebaseChild()
print("********************************")
print("********************************")
}
func firebaseChild () {
ref?.child("Test").childByAutoId().setValue("Hello Firebase")
}
FreddieOh和我在Slack聊天,问题是GoogleService-info.plist
文件中列出的数据库与他正在编辑的数据库不匹配。 (看起来可能在这种情况下,他已经删除并在Firebase控制台中重新创建了项目,但是没有更新plist文件。)
如果您发现自己处于相同的情况,即将读写访问权限设置为true并且仍然获得权限拒绝错误,请打开GoogleService-info.plist
文件并查看DATABASE_URL
的条目。然后转到项目中的Firebase数据库,查看数据选项卡的顶部,并确认其中列出的URL与plist文件中的URL相同。
我想要检查的另一件事是您更新了数据库规则以允许全局访问但忘记单击“发布”按钮。那......可能曾经发生在我身上。 :)
我有一个类似的问题。通过重置数据库的读/写规则解决了这个问题。如果您更改了规则,请尝试将其重置为默认值。
警告:这些规则允许任何人读写您的数据库!
实时数据库的默认规则
{
"rules": {
".read": true,
".write": true
}
}
Cloud Firestore的默认规则
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
转到Firebase控制台,然后执行以下步骤,即图像中的标识。
请查找图像并按照以下步骤操作。如果您是初学者并且在图像中遇到问题。我制作了关于错误的小视频。
视频解决方案:https://youtu.be/FcQCPqckvqo