firebase - PERMISSION_DENIED:权限缺失或不足
问题描述
我正在运行以下 firebase 代码
FirebaseApp app = await FirebaseApp.configure(
name: 'weather app',
options: const FirebaseOptions(
googleAppID: '1:nnnnnnnnn:android:nnnnnnn',
apiKey: 'XXXXXXXX',
projectID: 'XXXXX-XXX-XXX08',
),
);
Firestore firestore = Firestore(app: app);
FirebaseAuth.fromApp(app).signInAnonymously();
如果我第一次在模拟器中运行此代码,则会引发以下错误
I/flutter (17766): getConfigState ERROR 2 PlatformException(Error performing get, PERMISSION_DENIED: Missing or insufficient permissions., null)
W/Firestore(17766): (21.3.0) [Firestore]: Listen for Query(weather-api-info/owm) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
但是,如果我只是使用热重载或完全重载重新加载应用程序,那么它不会抱怨。同样,仅当应用程序在设备上首次运行时才会出现此问题(我可以通过卸载应用程序并重试来重现此问题)
Cloud Firestore 身份验证如下所示(我不打算设置任何登录或身份验证,但也不想保持打开状态
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
解决方案
所以,我能够自己解决这个问题。简而言之,我没有为异步调用正确设置代码。以下是我修改的内容(将下面提到的代码与原始帖子中的代码进行比较)
Future<void> getOWMFirestoreData() async {
try {
FirebaseApp app = await FirebaseApp.configure(
name: 'weather app',
options: const FirebaseOptions(
googleAppID: '1:nnnnnnnnn:android:nnnnnnn',
apiKey: 'XXXXXXXX',
projectID: 'XXXXX-XXX-XXX08',
),
);
await FirebaseAuth.fromApp(app).signInAnonymously();
Firestore firestore = Firestore(app: app);
var docs =
await firestore.collection('XXX-info').document('owm').get();
debugPrint('getOWMFirestoreData Succesfull ${docs.exists}');
推荐阅读
- php - 如何在 laravel 控制器中获取更改百分比值?
- amazon-web-services - 我需要快速解释 AWS Amplify Vue Storage amplify-s3-image-picker fileToKey
- ruby-on-rails - 如何覆盖从 gem 到 Rails 应用程序的装饰器(它使用 prepend)?
- c++ - 如何创建二维数组?
- image-processing - 通过矢量密钥加密算法,误差与输入密钥和真实密钥之间的差异成正比
- python - 如何解决pygame中的这个跳转问题
- go - 如何使用 Gin 上下文创建的请求 ID 记录 HTTP 客户端的请求
- c++ - 在 PC 上使用 SOEM 设置 EtherCat 主站
- android - 将 .svg 文件从文件路径加载到 ImageView
- python - 用熊猫转置两列和第一行