将Flutter与插件firebase_auth和firebase_database一起使用。 通过电子邮件和密码进行身份验 这是用于身份验证和处理身份验证更改事件的代码提取。验证成功后,代码将用户信息插入实时数据库。如果将数据库规则设置为读/写为true,则一切正常。但是,使用标准数据库写入规则(auth!= null),app会抛出DatabaseError:Permission denied。 看来数据库插件不知道经过身份验证的身份? 有什么想法是错的吗?
sudo dpkg --configure -a
然后:
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"
}
}
答案 0 :(得分:2)
我发现问题只发生在IOS上,我认为我的配置一定有问题,就是这样。 在根据此视频正确导入GoogleService-Info.plist之后:https://youtu.be/3nFIMej3Tvw它工作正常。