You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Firebase遇权限拒绝错误求助(新手)

Flutter Firestore 权限拒绝错误排查(已设置开放规则仍无效)

我在学生项目中测试NoSQL数据库,使用Flutter通过Firebase执行查询时遇到认证错误,错误信息如下:

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

我已经尝试将Firestore规则设置为完全开放(允许所有操作),但问题依旧存在。以下是相关代码和配置:

主代码(main.dart)

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

Future main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(const MyApp());
}

出错代码片段

@override
void initState() {
  super.initState();
  getUsers();
}

void getUsers() async {
  CollectionReference collectionReference =
      FirebaseFirestore.instance.collection("users");

  QuerySnapshot users = await collectionReference.get();

  if (users.docs.length != 0) {
    for (var doc in users.docs) {
      print(doc.data());
    }
  }
}

Android 配置文件

android/build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:7.2.0'
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    classpath 'com.google.gms:google-services:4.3.13'
}

android/app/build.gradle

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'com.google.gms.google-services'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
... ...
dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation platform('com.google.firebase:firebase-bom:31.1.0')
    implementation 'com.google.firebase:firebase-analytics-ktx'
    implementation 'androidx.multidex:multidex:2.0.1'
}

pubspec.yaml

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons: ^1.0.2
  firebase_core: ^2.3.0
  cloud_firestore: ^4.1.0

已尝试的Firestore规则

rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
 match /{document=**} {
  allow get, update, create,read, write, delete: if true;
  }
 }
}

排查与解决步骤

  1. 确认规则已发布生效
    在Firebase控制台修改规则后,必须点击发布按钮才能生效,仅保存不会应用到生产环境。检查控制台是否显示规则已成功发布。

  2. 验证Firebase初始化配置

    • 确保google-services.json文件已正确放置在android/app目录下,且文件内容与Firebase控制台下载的一致。
    • 若涉及iOS平台,确认GoogleService-Info.plist已正确添加到Xcode项目中。
  3. 修复依赖版本兼容性
    当前使用的firebase_core: ^2.3.0、cloud_firestore: ^4.1.0与Firebase BOM版本31.1.0存在版本不匹配问题,建议更新为兼容版本:

    • 更新pubspec.yaml中的依赖:
      firebase_core: ^2.15.0
      cloud_firestore: ^4.8.2
      
    • 同步更新Android端的Firebase BOM版本:
      implementation platform('com.google.firebase:firebase-bom:32.0.0')
      

    执行flutter clean和flutter pub get刷新依赖。

  4. 清除应用缓存并重启
    卸载应用后重新安装,清除本地缓存的旧规则配置;同时重启Flutter开发环境。

  5. 确认Firestore实例匹配
    若项目使用了自定义Firestore数据库实例,需在初始化时指定对应配置,确保代码调用的实例与规则配置的数据库一致:

    await Firebase.initializeApp(
      options: FirebaseOptions(
        projectId: "你的项目ID",
        appId: "你的应用ID",
        databaseURL: "https://你的数据库地址.firebaseio.com",
        // 其他必要配置项
      ),
    );
    
  6. 检查网络与项目状态
    确保设备网络正常,无防火墙或代理限制Firebase服务访问;同时在Firebase控制台确认项目状态正常,未被暂停或限制。


内容的提问来源于stack exchange,提问作者SamirVega

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 20:01:03