Flutter Firestore 权限被拒绝

Sha*_*ram 1 android rules flutter google-cloud-firestore

我拥有我的 Flutter Android 应用程序的公共权限。

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试像这样查询数据时:

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);

      },
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我明白了..

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.
Run Code Online (Sandbox Code Playgroud)

我尝试重新创建 Flutter 项目和 Firebase 应用程序,但仍然遇到同样的问题。使用相同的设置,我有一个工作的 Android 本机应用程序项目,但对于 flutter 来说它不起作用。自过去 5 个小时以来我一直在尝试,但我无法弄清楚实际问题是什么?

Ana*_*aga 6

就我而言,这都是因为 Firebase 数据库规则配置。更改了我的测试的以下规则并开始工作。(不建议)

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在发布之前设置适当的权限来访问您的数据库。