Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Firebase实时数据库不保存注册页中的数据_Ios_Swift_Firebase_Firebase Realtime Database - Fatal编程技术网

Ios Firebase实时数据库不保存注册页中的数据

Ios Firebase实时数据库不保存注册页中的数据,ios,swift,firebase,firebase-realtime-database,Ios,Swift,Firebase,Firebase Realtime Database,我正在Swift的申请注册页面上工作。Firebase中的身份验证部分运行良好,但数据库不会保存我请求的任何信息。有人能帮忙吗 我的代码: Auth.auth().createUser(withEmail: userEmail,password: userPassword, completion: {(User, error) in if error != nil { print(error as Any) return } guard l

我正在Swift的申请注册页面上工作。Firebase中的身份验证部分运行良好,但数据库不会保存我请求的任何信息。有人能帮忙吗

我的代码:

Auth.auth().createUser(withEmail: userEmail,password: userPassword, completion: {(User, error) in
    if error != nil {
        print(error as Any)
        return
    }
    guard let uid = User?.user.uid else {return}
    let ref = Database.database().reference(fromURL:"Database-URL")
    let userReference = ref.child("users").child(uid)

    let values = ["Firstname": userFirstName,"email": userEmail]
    userReference.updateChildValues(values, withCompletionBlock: { (error, reference) in
        if error != nil {
            print(error as Any)
            return
        }
    })
})
控制台打印一个错误

OptionalError域=com.firebase代码=1权限被拒绝 UserInfo={NSLocalizedDescription=权限被拒绝}


我可能不确定,但是createUser的完成不会给您提供User和error,而是AuthResult和error。因此,您必须从下面的结果中获取用户

Auth.auth().createUser(withEmail: email, password: password) { (authData, error) in
        if let error = error {
            debugPrint("FIREBASE ERROR : \(error.localizedDescription)")
        } else {
            if let authData = authData {
                let user = authData.user //here get the user from result
                self.saveToDB(user: user) . //save the user to database
            }
        }
    }

默认情况下,新Firebase控制台中项目中的数据库只能由经过身份验证的用户读取/写入:

{
  "rules": {
     ".read": "auth != null",
     ".write": "auth != null"
   }
 }
有关Firebase数据库安全规则,请参阅快速启动

由于您没有从代码中登录用户,因此数据库拒绝您访问数据。要解决此问题,您需要允许未经验证的访问数据库,或者在访问数据库之前登录用户

允许对数据库进行未经身份验证的访问 在教程更新之前,目前最简单的解决方法是进入项目控制台中的“数据库”面板,选择“规则”选项卡,并用以下规则替换内容:

{
  "rules": {
    ".read": true,
    ".write": true
    }
}

这使您的新数据库人人可读写。在投入生产之前,请确保再次保护您的数据库,否则可能会有人开始滥用它。

这是2019年5月firebase的新代码。只需将false更改为true,如下所示:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}

当错误不是nil时,您是否检查了正在打印的错误?@SahilManchanda我只看到了这个错误:OptionalError Domain=com.firebase Code=1 Permission denied UserInfo={NSLocalizedDescription=Permission denied}看看这个问题。它可能会帮助你朝着正确的方向前进