Firestore安全规则Flutter应用拒绝了权限

时间:2020-10-30 14:24:39

标签: flutter google-cloud-firestore firebase-security

我目前正在尝试将Firebase后端连接到Flutter应用。在向Firestore创建简单的get()请求后,我每次都会遇到相同的错误:

[cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.

我尝试过的安全规则:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.time < timestamp.date(2020, 11, 30);
    }
  }
}
allow read, write;
allow read, write: if true;
allow read, write: if request.auth.uid != null;
allow read, write: if request.auth != null;
allow read, write: if auth != null ;

我实际上在阳光下尝试了一切,但在读取或写入数据库方面均未成功,这使我相信错误出在代码中。我检查过以确保Firebase正确初始化,Firebase Core和Firebase Firestore也都正确初始化。

这是Firebase的问题,还是有一种执行Firestore的特定方法?

获取请求:

  fetchChatMessages() async {
    var messageSnapShots =
        await FirebaseFirestore.instance.collection('topicofday').get();

    print('Messages: $messageSnapShots');
  }
}

初始化Firebase:

class MyApp extends StatelessWidget {
  final Future<FirebaseApp> _initialization = Firebase.initializeApp();
  @override
  FutureBuilder build(BuildContext context) {
    return FutureBuilder(
      future: _initialization,
      builder: (BuildContext context, AsyncSnapshot<dynamic> snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          return buildMaterialApp(context);
        }
        return Center(
          child: Container(
            child: CircularProgressIndicator(
              backgroundColor: Theme.of(context).primaryColor,
            ),
          ),
        );
      },
    );
  }

其他信息:

不确定这是否会完全影响请求,但我使用的是状态管理提供程序。

1 个答案:

答案 0 :(得分:1)

@DougStevenson谢谢你!原来,我试图从Firebase控制台中的错误项目中提取数据。奇怪的情况,但您的评论鼓励我跳出框框。

原因是将来自其他项目的错误GoogleService-Info.plist文件放入了我的Runner文件中。