当前位置: 首页 > 知识库问答 >
问题:

使用带有Flatter的Firebase数据库的权限被拒绝?

宋瀚海
2023-03-14

Firebase规则包括:

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

代码

import 'package:flutter/material.dart';
import 'package:firebase_database/firebase_database.dart';
void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(

        primarySwatch: Colors.red,
        // This makes the visual density adapt to the platform that you run
        // the app on. For desktop platforms, the controls will be smaller and
        // closer together (more dense) than on mobile platforms.
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: FirebaseDemoScreen(),
    );
  }
}

class FirebaseDemoScreen extends StatelessWidget  {
  final databaseReference = FirebaseDatabase.instance.reference();
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return  Scaffold(
      appBar: AppBar(
        title: Text('Firebase Connect'),
      ),
      body: Center(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[

              RaisedButton(
                child: Text('Create Record'),
                onPressed: () {
                  createRecord();
                },
              ),

              RaisedButton(
                child: Text('View Record'),
                onPressed: () {
                  getData();
                },
              ),
              RaisedButton(
                child: Text('Update Record'),
                onPressed: () {
                  updateData();
                },
              ),
              RaisedButton(
                child: Text('Delete Record'),
                onPressed: () {
                  deleteData();
                },
              ),
            ],
          )
      ), //center
    );
  }



void createRecord(){
  databaseReference.child("1").set({
    'title': 'Mastering EJB',
    'description': 'Programming Guide for J2EE'
  });
  databaseReference.child("2").set({
    'title': 'Flutter in Action',
    'description': 'Complete Programming Guide to learn Flutter'
  });
}
void getData(){
  databaseReference.once().then((DataSnapshot snapshot) {
    print('Data : ${snapshot.value}');
  });
}

void updateData(){
  databaseReference.child('1').update({
    'description': 'J2EE complete Reference'
  });
}

void deleteData(){
  databaseReference.child('1').remove();
}
}

它会导致一个错误:

[错误:flatter/lib/ui/ui_dart_state.cc(166)]未处理的异常:PlatformException(-3,权限被拒绝,)E/flatter(31408):#0 StandardMethodCodec。解码信封(包:flatter/src/services/message_编解码器。dart:569:7)E/flatter(31408):#1个方法频道_invokeMethod(包:flatter/src/services/platform_channel.dart:159:18)E/flatter(31408):E/flatter(31408):#2方法频道。invokeMethod(包:flatter/src/services/platform_channel.dart:332:12)E/flatter(31408):#3数据库参考。套装(套装:firebase_database/src/database_reference.dart:74:31)E/Flatter(31408):#4 FirebaseDemoScreen。createRecord(软件包:learn/main.dart:77:32)E/flatter(31408):#5 FirebaseDemoScreen。建筑(套装:learn/main.飞镖:42:19)E/Flatter(31408):#6)_把手(包装:颤振/src/材料/墨水井。省道:953:19)E/颤振(31408):#7!。建筑(包装:flift/src/material/ink_well.省道:1059:38)E/flift(31408):#8手势识别器。invokeCallback(包:flatter/src/signatures/recognizer.dart:182:24)E/flatter(31408):#9 TapGestureCongnizer。handleTapUp(套装:flatter/src/signatures/tap.dart:522:11)E/flatter(31408):#10 BaseTapgestureRecognitor_检查(软件包:flatter/src/signatures/tap.dart:282:5)E/flatter(31408):#11 BaseTapgestureRecognitor。handlePrimaryPointer(软件包:flatter/src/signatures/tap.dart:217:7)E/flatter(31408):#12个PrimaryPointer检测识别器。handleEvent(套装:flatter/src/signities/recognizer.dart:475:9)E/flatter(31408):#13点外部_调度(程序包:flift/src/signities/pointer_router.dart:76:12)E/flift(31408):#14 pointer路由器_调度事件路由。(软件包:flatter/src/signities/pointer_router.dart:122:9)E/flatter(31408):#15_LinkedHashMapMixin。forEach(dart:collection patch/compact_hash.dart:377:8)E/flatter(31408):#16点外部_dispatchEventToRoutes(包:flatter/src/signities/pointer_router.dart:120:18)E/flatter(31408):#17 PointerRouter。路线(包:flift/src/signatures/pointer_router.dart:106:7)E/flift(31408):#18手势绑定。handleEvent(套装:flift/src/signatures/binding.dart:218:19)E/flift(31408):#19手势绑定。dispatchEvent(包:flatter/src/signatures/binding.dart:198:22)E/flatter(31408):#20个手势绑定_手指头事件(包装:flatter/src/signatures/binding.dart:156:7)E/flatter(31408):#21手势绑定_flushPointerEventQueue(包装:flift/src/signatures/binding.dart:102:7)E/flift(31408):#22手势绑定_handlePointerDataPacket(包:flatter/src/signatures/binding.dart:86:7)E/flatter(31408):#23 RootRunnary(dart:async/zone.dart:1206:13)E/flatter(31408):#24 CustomZone。一元(dart:async/zone.dart:1100:19)E/flatter(31408):#25#CustomZone。runUnaryGuarded(dart:async/zone.dart:1005:7)E/flatter(31408):#26_invoke1(dart:ui/hooks.dart:281:10)E/flatter(31408):#27#u dispatchPointerDataPacket(dart:ui/hooks.dart:190:5)

共有3个答案

蒯嘉赐
2023-03-14

您可能正试图访问错误的地方检查数据库您正试图访问

  1. 转到您提到的“数据库”选项

https://github.com/firebase/quickstart-js/issues/239#issuecomment-417862631

https://github.com/firebase/quickstart-js/issues/239#issuecomment-465989989

如果前一个问题对你没有帮助,你可以参考这个问题获得更多答案

https://github.com/firebase/quickstart-js/issues/239

凌炜
2023-03-14

解决了我刚刚更新了Android Studio,然后我重新启动了一次使缓存无效并重新启动了Android Studio,现在它对我有效。

错误

 plugin project :firebase_core_web not found

was仍然存在错误,但与firebase的数据库连接是使用相同的代码和firebase规则建立的。

怀齐智
2023-03-14

测试模式的规则设置为重试[1]:https://i.stack.imgur.com/Xeeis.png

 类似资料:
  • 我正试图按照Firebase的在线指南使用Firebase实时数据库,但由于我的许可被拒绝,我无法获得数据库的任何更新。我不确定我做错了什么。我甚至设定了阅读和写作的规则。 onClickListener内的代码如下: 这是在片段中,按钮在开始片段替换事务之前首先完成这些语句。 以下是Firebase中的规则: 由于我不熟悉JSON,我也尝试过在“.write”结尾加逗号 这是stacktrace

  • 问题内容: 我对编码比较陌生,遇到了麻烦。 我有这段代码可以将数据发送到Firebase 但是,我不断收到错误: FIREBASE警告:设置为/ users /(GoogleID)失败:Permission_denied 2016-05-23 22:52:42.707 firebase.js:227未捕获(承诺)错误:PERMISSION_DENIED:权限被拒绝(…) 当我尝试查找时,它谈论的是

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

  • 我在Kotlin构建了一个应用程序,在节点中有一个后端。js。我允许用户在客户端应用程序上使用Firebase身份验证登录/注册。 该应用程序的部分功能是让用户通过Firebase的实时数据库在线保存数据。应用程序内部发生的事情是,一旦用户登录,我就会将他/她的uid传递到后端,后端会向数据库发出请求。 当数据库的规则是允许每个人读/写时,一切都正常工作。一旦我把它们改成这样: } 我一直被拒绝许

  • 我一直在尝试使用数据库规则和通过CLI托管来创建一个基本上是公共的数据库,但有一些限制。如果我根据规则声明数据库已打开,我可以访问该数据库,但如果我从顶层删除读/写操作并尝试仅访问一个子“规则”,我会遇到权限错误: [2018-10-04T16:13:56.926Z]@firebase/database:firebase警告:设置为/2019/statistics/topTens/Strider

  • 当我执行以下查询时: 我得到一个错误: Msg 262,级别14,状态1,第4行查看数据库“master”中的数据库状态权限被拒绝。Msg 297,16级,状态1,第4行用户没有执行此操作的权限。 但是,我能够使用(由SQLAzure门户提供的)管理员用户执行此查询。 我无法向我创建的任何用户授予主视图数据库状态(使用预配的管理员用户),我得到以下错误:授予者没有授予权限。 你知道如何执行查询吗