如何使用匿名身份验证保存到Firebase数据库 - 使用Flutter

时间:2018-05-24 15:11:41

标签: firebase firebase-realtime-database firebase-authentication flutter firebase-security-rules

我在使用匿名身份验证

进行身份验证后,我的权限被拒绝了
[ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter (21033): PlatformException(-3, Permission denied, )
...
_getCurrentUser: FirebaseUser({providerId: firebase, uid: DOIL...............u54j1, displayName: , email: , isAnonymous: true, isEmailVerified: false, providerData: [{providerId: firebase, uid: DOIL//////////////54j1, displayName: , email: }]})

我在Firebase数据库上的规则是

{
  "rules": {
    //Test rule
//     "users": {
//   "$uid": {
//     ".read": "auth != null && auth.uid == $uid",
//     ".write": "auth != null && auth.uid == $uid",
//       }
//    }

//       General rule - closed to everyone but app uses
         ".read": "auth != null",
         ".write": "auth != null"
  }
}

我用来保存数据的代码 - 在DB规则设置为对所有人开放的情况下正常工作。

      _saveUserData(UserEntry userData) async {

    print("_saveUserData jsonData =" userData.toJson().toString());

    // SAVE MY DATA TO DB
    // tUsers = db reference to the child node users on Firebase
    _tUsers.push().set(talentUserData.toJson());


  }

我做错了什么?任何帮助表示赞赏。感谢。

1 个答案:

答案 0 :(得分:0)

希望能让人头疼。我发现问题是没有获得Firebase数据库的新实例。我在main.dart中创建了实例,并将其传递给构造函数中的HomePage(根据库中的示例文件)。

当我得到一个新的实例......出于绝望的调试......它有效。我现在可以匿名登录,以便只有安装了应用程序的人才能写入数据库。