是什么导致FIREBASE和FLUTTER发出“权限被拒绝”消息

时间:2018-09-06 11:54:23

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

我遇到了错误

  

“ W / SyncTree(31625):在/ address处监听失败:DatabaseError:权限被拒绝”

,同时使用匿名Firebase用户向Firebase发送请求,并且没有花哨的Firebase数据库规则:)。 ..我想找出导致此消息的原因。

编辑:错误与现有用户相同,这意味着用户登录似乎有效,但无法访问数据库。

我到目前为止所做的事情:

  • 设置Firebase(包括添加google_service.json,pubspec.yaml中的依赖项)-到目前为止可以正常运行
  • 按以下方式创建登录名(例如来自Google link的示例):

    Future<String> _testSignInAnonymously() async {
      final FirebaseUser user = await _auth.signInAnonymously();
      assert(user != null);
      assert(user.isAnonymous);
      assert(!user.isEmailVerified);
      assert(await user.getIdToken() != null);
      assert(user.providerData.length == 1);
      assert(user.providerData[0].providerId == 'firebase');
      assert(user.providerData[0].uid != null);
      assert(user.providerData[0].displayName != null);
      assert(user.providerData[0].photoUrl == null);
      assert(user.providerData[0].email != null);
    
      final FirebaseUser currentUser = await _auth.currentUser();
      print(currentUser.uid);
      print(currentUser.isAnonymous);
      assert(user.uid == currentUser.uid);
    
      return 'signInAnonymously succeeded: $user';
    }
    
  • print语句提供了一个userId(并且此id也位于firebase auth部分中)->在我看来,我已经登录了用户

  • 实现类似Google示例(link)的初始化类型:

    Future<void> main() async {
      final FirebaseApp app = await FirebaseApp.configure(
        name: 'mydbName',
        options: const FirebaseOptions(
           googleAppID: 'myAppId',
           apiKey: 'myApiKey',
           databaseURL: 'myUrl',
        ),
     );
     runApp(new MyApp(app));
    }
    
  • 在另一个有状态的状态小部件上,我尝试请求一些Firebase数据:

    void initState() {
      final FirebaseDatabase database = new FirebaseDatabase(app: widget.app);
      database.reference().child('address').once().then((DataSnapshot snapshot) {
        print('Connected to database and read ${snapshot.value}');
      });
      super.initState();
    }
    
  • 我已删除了Firebase中的所有规则,除了:

    ".read": "auth != null",
    ".write": "auth != null",
    
  • 我在我的firebase android app

  • 中使用SHA-1证书/指纹
  • 在使用匿名用户时,我将firebase ios app与相同的Firebase数据库一起使用

我需要什么:

我需要一些提示,以了解该初始化代码或用户登录名是否存在任何问题

1 个答案:

答案 0 :(得分:3)

FirebaseApp.configure(

中似乎数据库未正确寻址
FirebaseDatabase.instance.reference().child(...)

将使用google-services.json

中配置的项目的默认数据库