失败:permission_denied when setValue: 或 removeValue: 在 Firebase 数据库中 | Swift 4
failed: permission_denied when setValue: or removeValue: in Firebase Database | Swift 4
我在 Whosebug 中看到了很多答案,但 none 对我有用!
这是我的代码:
import UIKit
import Firebase
class ViewController: UIViewController {
@IBOutlet var txt: UITextField!
var ref = DatabaseReference.init()
override func viewDidLoad() {
super.viewDidLoad()
loginAnony()
self.ref = Database.database().reference()
}
func loginAnony(){
Auth.auth().signInAnonymously(){
(user,error) in
if let error = error{
print(error.localizedDescription)
}else{
print("User ID\(user?.user.uid)")
}
}
}
@IBAction func btnClick(_ sender: Any) {
self.ref.child("chat").setValue("Yogesh")
}
}
我的数据库规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
我已经删除了这个:
{
"rules": {
".read": true,
".write": true
}
}
但还是不行。谁能帮我解决这个问题?
需要像这样在 AppDelegate 中配置 Firebase
func application(_ application: UIApplication, didFinishLaunchingWithOptions... {
FirebaseApp.configure()
然后在你的viewController设置一个class var:
class ViewController: UIViewController{
var ref: DatabaseReference!
所以,不要这样做:var ref = DatabaseReference.init()
然后在 viewDidLoad 中,初始化 class 变量,然后进行身份验证
override func viewDidLoad() {
super.viewDidLoad()
self.ref = Database.database().reference()
//proceed to authenticate
此外,Firestore 规则不适用于 Firebase 实时数据库,它有自己的一套规则。
service cloud.firestore //doesn't do anything to RTDB
因此,将您的 Firebase 数据库规则保留为
的默认规则
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
打开权限会造成安全漏洞,最合乎逻辑的方法是登录应用程序。
我在 Whosebug 中看到了很多答案,但 none 对我有用!
这是我的代码:
import UIKit
import Firebase
class ViewController: UIViewController {
@IBOutlet var txt: UITextField!
var ref = DatabaseReference.init()
override func viewDidLoad() {
super.viewDidLoad()
loginAnony()
self.ref = Database.database().reference()
}
func loginAnony(){
Auth.auth().signInAnonymously(){
(user,error) in
if let error = error{
print(error.localizedDescription)
}else{
print("User ID\(user?.user.uid)")
}
}
}
@IBAction func btnClick(_ sender: Any) {
self.ref.child("chat").setValue("Yogesh")
}
}
我的数据库规则:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
我已经删除了这个:
{
"rules": {
".read": true,
".write": true
}
}
但还是不行。谁能帮我解决这个问题?
需要像这样在 AppDelegate 中配置 Firebase
func application(_ application: UIApplication, didFinishLaunchingWithOptions... {
FirebaseApp.configure()
然后在你的viewController设置一个class var:
class ViewController: UIViewController{
var ref: DatabaseReference!
所以,不要这样做:var ref = DatabaseReference.init()
然后在 viewDidLoad 中,初始化 class 变量,然后进行身份验证
override func viewDidLoad() {
super.viewDidLoad()
self.ref = Database.database().reference()
//proceed to authenticate
此外,Firestore 规则不适用于 Firebase 实时数据库,它有自己的一套规则。
service cloud.firestore //doesn't do anything to RTDB
因此,将您的 Firebase 数据库规则保留为
的默认规则{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
打开权限会造成安全漏洞,最合乎逻辑的方法是登录应用程序。