【问题标题】:Flutter Firebase database permission denied after successful authentication成功身份验证后,Flutter Firebase 数据库权限被拒绝
【发布时间】:2018-08-21 01:13:25
【问题描述】:

将 Flutter 与插件 firebase_auth 和 firebase_database 一起使用。 使用电子邮件和密码进行身份验证。 这是用于身份验证和处理身份验证更改事件的代码提取。验证成功后,代码将用户信息插入实时数据库。如果将数据库规则设置为读/写 true,则一切正常。但是,使用标准数据库写入规则 (auth != null),应用程序会抛出 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"
  }
}

【问题讨论】:

  • 您能否也将您的 Firebase 规则添加到您的问题中?

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


【解决方案1】:

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

【讨论】:

  • 嗨,这对你第一次在 Android 上有用吗?在 Android 上,我有一个经过身份验证的用户,可以从不受限制的 Firebase Db 中读取。如果我添加规则以限制仅对经过身份验证的用户的访问(“.read”:“auth != null”),那么我将无法读取我的数据。我是否需要将经过身份验证的用户专门链接到我的实例化 firebase 数据库?谢谢
  • 不,只要你的 android/app/src 中有 google-services.json,你就不必做任何特别的事情。还要检查它是否包含 api_key 条目:"api_key": [{ "current_key": "##########" }]。出于某种原因,我不得不手动将其添加到我的 google-services.json 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-09
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
相关资源
最近更新 更多