我正在尝试将数据写入Firebase数据库,但是当我按下保存的按钮时,我仍然收到以下错误。
2016-12-02 11:09:42.548 StartupNow [1482:60415] [FirebaseDatabase] setValue:或removeValue:at / test / -KY-VpLZWbp4vjF3BpMk failed: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")
}
答案 0 :(得分:15)
我有类似的问题。通过重置数据库的读/写规则解决了这个问题。如果您更改了规则,请尝试将其重置为默认值。
警告:这些规则允许任何人读写您的数据库!
实时数据库的默认规则
{
"rules": {
".read": true,
".write": true
}
}
Cloud Firestore的默认规则
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
答案 1 :(得分:8)
FreddieOh和我在Slack聊天,问题是GoogleService-info.plist
文件中列出的数据库与他正在编辑的数据库不匹配。 (看起来可能在这种情况下,他已经删除并在Firebase控制台中重新创建了该项目,但还没有更新plist文件。)
如果您发现自己处于相同的情况,即您已将读写权限设置为true且仍然获得权限拒绝错误,请打开GoogleService-info.plist
文件并查看{DATABASE_URL
条目1}}。然后转到项目中的Firebase数据库,查看数据选项卡的顶部,并确认其中列出的URL与plist文件中的URL相同。
我认为要检查的另一件事是您更新了数据库规则以允许全局访问但忘记单击“发布”按钮。那......可能曾经发生在我身上。 :)
答案 2 :(得分:8)
转到Firebase控制台,然后执行以下步骤,即图像中标识。
请查找图片并按照以下步骤操作。如果您是初学者并且在图像中遇到问题。我制作了关于错误的小视频。
答案 3 :(得分:2)
在尝试使用每种资源后,我已经解决了相同的问题。唯一的解决方案是
转到fireBase控制台->选择您的项目->转到数据库->选择规则(“在数据旁边显示在中间”)->将两者都设为true
{
"rules": {
".read": true,
".write": true
}
这将是完美的
答案 4 :(得分:0)