简体   繁体   中英

How to write data into firebase database using flutter?

Following are rules of firebase:

{ "rules": { ".read": false, ".write": false } }

I am getting error like this one:

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(-3, Permission denied, ) E/flutter (11412): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7) E/flutter (11412): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33) E/flutter (11412): E/flutter (11412): #2 DatabaseReference.set (package:firebase_database/src/database_reference.dart:73:31) E/flutter (11412): #3 _HomeState._drawerItems. (package:flutter_app_pg/ui/home.dart:198:60) E/flutter (11412): E/flutter (11412): #4 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14) E/flutter (11412): #5 _InkResponseState.build. (package:flutter/src/material/ink_well.dart:789:36) E/flutter (11412): #6 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24) E/flutter (11412): #7 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11) E/flutter (11412): #8 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5) E/flutter (11412): #9 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:236:7) E/flutter (11412): #10 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27) E/flutter (11412): #11 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20) E/flutter (11412): #12 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22) E/flutter (11412): #13 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7) E/flutter (11412): #14 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7) E/flut ter (11412): #15 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7) E/flutter (11412): #16 _rootRunUnary (dart:async/zone.dart:1138:13) E/flutter (11412): #17 _CustomZone.runUnary (dart:async/zone.dart:1031:19) E/flutter (11412): #18 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7) E/flutter (11412): #19 _invoke1 (dart:ui/hooks.dart:273:10) E/flutter (11412): #20 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5) E/flutter (11412):

You are using default Realtime database rules. Here both .read and .write set to false , which would restrict both Read and Write access to your database.

Please change your Database rules as follows:

Allow ANYONE to Read and Write

This is not usually recommended unless you explicitly want to allow everyone to read and write to your database.

{
 "rules": {
     ".read": true,
     ".write": true,
  }
}

Allow Only Authenticated users to Read and Write

{
 "rules": {
     ".read": "auth != null",
     ".write": "auth != null",
  }
}

These rules apply to whole database. If you have multiple Collections in the same database want to apply different rules for each of them. You can do so too.

Different rules for different Collections

For an instance, you have two collections messages and news , you can write different rules for each as :

{
  "rules": {

    // Only Authenticated users can READ and WRITE to messages collection
    "messages": {
      ".read": "auth != null",
      ".write": "auth != null"
    },

    // Anyone can READ from news collection, but no one can WRITE to it
    "news": {
      ".read": true,
      ".write": false
    }
  }
}

You can use many other such conditions and parameters to customize access to your database. Read Firebase Realtime-database rules for more.

Hope it helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM