我拥有Flutter Android App的公共权限。
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
但是当我尝试查询这样的数据时:
class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Firestore App"),
centerTitle: true,
),
body: StreamBuilder(
stream: Firestore.instance.collection("mydata").snapshots(),
builder: (BuildContext context, AsyncSnapshot<QuerySnapshot> snapshot) {
if (!snapshot.hasData) return CircularProgressIndicator();
return FirestoreListview(documents: snapshot.data.documents);
},
),
);
}
}
class FirestoreListview extends StatelessWidget {
final List<DocumentSnapshot> documents;
FirestoreListview({this.documents});
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: documents.length,
itemExtent: 90.0,
itemBuilder: (BuildContext context, int index){
String name = documents[index].data["title"].toString();
return Text(name);
},
);
}
}
我明白了..
W/Firestore(12477): (0.6.6-dev) [Firestore]: Listen for Query(flutter_data) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
I/System.out(12477): com.google.firebase.firestore.FirebaseFirestoreException: PERMISSION_DENIED: Missing or insufficient permissions.
我尝试重新创建Flutter项目和Firebase应用程序,但仍然遇到同样的问题。使用相同的设置,我有一个有效的Android原生App项目但是因为它不起作用。自从过去5个小时以来我一直在努力,但我无法弄清楚实际问题是什么?
在我的情况下,它全部是因为Firebase数据库规则配置。更改了以下规则以进行测试并开始工作。 (不建议)
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write;
}
}
}
在发布之前设置访问数据库的适当权限。