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

验证成功后,Flatter Firebase数据库权限被拒绝,firebase,firebase-realtime-database,dart,firebase-authentication,flutter,Firebase,Firebase Realtime Database,Dart,Firebase Authentication,Flutter,与firebase_auth和firebase_数据库插件一起使用flifter。 使用电子邮件和密码进行身份验证。 这是用于身份验证和处理身份验证更改事件的代码提取。验证成功后,代码将用户信息插入实时数据库。如果数据库规则设置为读/写真,则一切正常。但是,使用标准数据库写入规则(auth!=null),应用程序抛出DatabaseError:权限被拒绝。 数据库插件似乎不知道经过身份验证的身份? 你知道怎么了吗 FirebaseAuth _auth = FirebaseAuth.instanc

与firebase_auth和firebase_数据库插件一起使用flifter。 使用电子邮件和密码进行身份验证。 这是用于身份验证和处理身份验证更改事件的代码提取。验证成功后,代码将用户信息插入实时数据库。如果数据库规则设置为读/写真,则一切正常。但是,使用标准数据库写入规则(auth!=null),应用程序抛出DatabaseError:权限被拒绝。 数据库插件似乎不知道经过身份验证的身份? 你知道怎么了吗

FirebaseAuth _auth = FirebaseAuth.instance;

user = await _auth.signInWithEmailAndPassword(
  email: _emailC.text,
  password: _passC.text
);
然后:

以下是导致“权限被拒绝”的规则:


当我发现这个问题只出现在IOS上时,我想一定是我的配置出了问题,就是这样。
根据此视频正确导入GoogleService-Info.plist后:效果很好。

您还可以在问题中添加firebase规则吗?您好,这是您第一次在Android上使用吗?在Android上,我有一个经过身份验证的用户,可以从一个不受限制的Firebase数据库读取数据。如果我添加规则来限制仅对经过身份验证的用户的访问(“.read”:“auth!=null”),则我无法读取数据。我是否需要专门将经过身份验证的用户链接到实例化的firebase数据库?谢谢,只要android/app/src中有google-services.json,你就不必做任何特殊的事情。还要检查它是否包含api#键条目:“api#键”:[{“当前#键”:“######”}]。出于某种原因,我不得不手动将其添加到我的google-services.json中。
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"
  }
}