将Flutter与插件firebase_auth和firebase_database一起使用 . 使用电子邮件和密码进行身份验这是用于身份验证和处理身份验证更改事件的代码提取 . 验证成功后,代码将用户信息插入实时数据库 . 如果将数据库规则设置为读/写为true,则一切正常 . 但是,使用标准数据库写入规则(auth!= null),app会抛出DatabaseError:Permission denied . 看来数据库插件不知道身份验证身份?有什么想法有什么不对?
FirebaseAuth _auth = FirebaseAuth.instance;
user = await _auth.signInWithEmailAndPassword(
email: _emailC.text,
password: _passC.text
);
然后:
FirebaseAuth _auth = FirebaseAuth.instance;
StreamSubscription<FirebaseUser> _userChangeEvent;
DatabaseReference _usersDbRef = database.reference().child('users');
_userChangeEvent = _auth.onAuthStateChanged.listen((user) {
setState(() {
_isAuthenticated = user != null && user.isEmailVerified;
});
if (_isAuthenticated && _usersDbRef != null) {
_usersDbRef.child(user.uid).once().then((
DataSnapshot data) {
if (data.value == null) {
_usersDbRef.child(user.uid).set({
'id': user.uid,
'email': user.email,
'display_name': user.displayName
});
}
});
}
});
我已经写过,规则是标准的,但是由于安德烈要求将它们包含在这里,它们是:当一切正常时,这些是规则:
{
"rules": {
".read": "true || auth != null",
".write": "true || auth != null"
}
}
这些是“拒绝许可”导致的规则:
{
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
1 回答
在我发现问题只出现在IOS之后,我认为我的配置一定有问题,就是这样 . 在根据此视频正确导入GoogleService-Info.plist之后:https://youtu.be/3nFIMej3Tvw它工作正常 .