Ios Firebase实时数据库不保存注册页中的数据
我正在Swift的申请注册页面上工作。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
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}看看这个问题。它可能会帮助你朝着正确的方向前进