成功验证后,Flutter Firebase数据库权限被拒绝

时间:2018-03-12 21:54:30

标签: firebase firebase-realtime-database dart firebase-authentication flutter

将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"
  }
}

1 个答案:

答案 0 :(得分:2)

我发现问题只发生在IOS上,我认为我的配置一定有问题,就是这样。 在根据此视频正确导入GoogleService-Info.plist之后:https://youtu.be/3nFIMej3Tvw它工作正常。