gpt4 book ai didi

firebase - 在 Flutter 中使用 Firebase 数据库的权限被拒绝

转载 作者:IT王子 更新时间:2023-10-29 06:47:45 24 4
gpt4 key购买 nike

我的团队正在尝试在 Flutter 应用中使用 Firebase 实时数据库。他们更改了 pubspec.yaml 和两个 build.gradle 文件,并链接了 google-services.json 文件,如在线教程中所示。然而,这些教程似乎相互矛盾(它们之间甚至与文档)。

这是他们代码的相关部分:

import 'package:flutter/material.dart';
import 'dart:async';
import 'package:firebase_database/firebase_database.dart';
import 'package:firebase_core/firebase_core.dart';

class ProgramPage extends StatefulWidget {
@override
_ProgramPageState createState() => new _ProgramPageState();
}

class _ProgramPageState extends State<ProgramPage> {
List<Conference> _conferences = List();
DatabaseReference itemRef;

final GlobalKey<FormState> formKey = GlobalKey<FormState>();

static Future<FirebaseApp> _getApp() async {
const FirebaseOptions myOptions = const FirebaseOptions(
googleAppID: '<id>',
apiKey: '<key>',
databaseURL: '<url>',
);
FirebaseApp app;
app = await FirebaseApp.configure(name: "conferences", options: myOptions);
return app;
}

@override
void initState() {
super.initState();
_getApp().then((app) {
final FirebaseDatabase database = new FirebaseDatabase(app: app);
itemRef = database.reference().child('conferences');
itemRef.onChildAdded.listen(_onEntryAdded);
itemRef.onChildChanged.listen(_onEntryChanged);
});
}

_onEntryAdded(Event event) {
setState(() {
_conferences.add(Conference.fromSnapshot(event.snapshot));
});
}

_onEntryChanged(Event event) {
var old = _conferences.singleWhere((entry) {
return entry.id == event.snapshot.key;
});
setState(() {
_conferences[_conferences.indexOf(old)] =
Conference.fromSnapshot(event.snapshot);
});
}

// the build method basically returns a ListView of Conference objects
}

但是当他们在 Android 模拟器上运行它时,他们会遇到这些错误:

W/SyncTree( 7764): Listen at /conferences failed: DatabaseError: Permission denied
E/flutter ( 7764): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 7764): Instance of 'DatabaseError'
E/flutter ( 7764): #0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1114:29)
E/flutter ( 7764): #1 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter ( 7764): #2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
E/flutter ( 7764): [ERROR:topaz/lib/tonic/logging/dart_error.cc(16)] Unhandled exception:
E/flutter ( 7764): Instance of 'DatabaseError'
E/flutter ( 7764): #0 _rootHandleUncaughtError.<anonymous closure> (dart:async/zone.dart:1114:29)
E/flutter ( 7764): #1 _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
E/flutter ( 7764): #2 _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)

你能解释一下哪里出了问题吗?

编辑:安全规则:

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

编辑 2:我们正在使用 Santosh Anand 的解决方案来简化规则(安全性不是这个项目中的大问题)。现在我们收到这些消息:

W/zygote  (14174): Unsupported class loader
W/zygote (14174): Skipping duplicate class check due to unsupported classloader
I/DynamiteModule(14174): Considering local module com.google.android.gms.firebase_database:4 and remote module com.google.android.gms.firebase_database:6
I/DynamiteModule(14174): Selected remote version of com.google.android.gms.firebase_database, version >= 6
W/zygote (14174): Unsupported class loader
W/zygote (14174): Skipping duplicate class check due to unsupported classloader
D/NetworkSecurityConfig(14174): No Network Security Config specified, using platform default
I/zygote (14174): Do partial code cache collection, code=29KB, data=26KB
I/zygote (14174): After code cache collection, code=29KB, data=26KB
I/zygote (14174): Increasing code cache capacity to 128KB

最佳答案

您必须使用 firebase 对您的应用程序进行身份验证。

或者

您可以像更改安全规则一样

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

关于firebase - 在 Flutter 中使用 Firebase 数据库的权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50924437/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com