How to save, with anonymous authentication, to Fir

2019-08-28 06:47发布

问题:

I'm getting permission denied after I have authenticated with Anonymous Auth

[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: }]})

My rules on the Firebase DB are

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

The code I use to save data - works fine with DB rules set to open to all.

      _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());


  }

What am I doing wrong ? Any assistance is appreciated. Thanks.

回答1:

In the hope of saving someone a headache. I found the problem to be not getting a fresh instance of the Firebase Database. I created the instance in my main.dart and passed it to my HomePage in the constructor (per the example file in the library).

When I got a fresh instance ...out of desperation debugging...it worked. I can now have anonymous login so that only people who have installed the app can write to the database.