我在编写flutter应用程序时在macOs上遇到了这个问题,相同的基础代码在我的Windows PC中工作,但在macOs中不工作。正如您在我的日志中看到的,应用程序已连接,但我仍然无法在我的Firestore数据库上发出请求
我改变了规则
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
到
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
但我也犯了同样的错误。
D/FirebaseAuth(11790): Notifying id token listeners about user ( tNGS8j375AYehEPDhZADPP80zLY2 ).
W/DynamiteModule(11790): Local module descriptor class for providerinstaller not found.
I/DynamiteModule(11790): Considering local module providerinstaller:0 and remote module providerinstaller:0
W/ProviderInstaller(11790): Failed to load providerinstaller module: No acceptable module found. Local version is 0 and remote version is 0.
W/Firestore(11790): (24.0.0) [Firestore]: Listen for Query(target=Query(usersProDEV where uuid == tNGS8j375AYehEPDhZADPP80zLY2 order by __name__);limitType=LIMIT_TO_FIRST) failed: Status{code=PERMISSION_DENIED, description=Missing or insufficient permissions., cause=null}
E/flutter (11790): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: [cloud_firestore/permission-denied] The caller does not have permission to execute the specified operation.
相同的代码在我的Windows PC工作
4条答案
按热度按时间vmdwslir1#
根据此post,您的应用访问互联网时出错。请检查您的网络连接:
检查您在androidManifest文件中是否具有适当的互联网权限(由Abhishek Dutt建议)。
如果您使用的是模拟器,请检查模拟器是否可以使用此帖子访问Internet。
第一版:
您能否尝试使用本文档中的示例代码进行身份验证:
此代码只能用于阅读而不能用于写入:
z0qdvdin2#
几次之后,我意识到这个问题不仅是在MacOs下,而且是在模拟器上。通过进一步挖掘,我意识到我在项目上激活的AppCheck不接受模拟器下调试模式的所有请求。
dldeef673#
在
projectFolder/android/app/src/main/AndroidManifest.xml
中添加以下内容:7nbnzgx94#
如文档https://firebase.google.com/docs/app-check/flutter/debug-provider中所述
当Firebase尝试向后端发送请求时,您的应用会将本地调试令牌打印到调试输出。例如:
enter image description here
在Firebase控制台的“应用检查”部分,从应用的溢出菜单中选择“管理调试令牌”。然后,注册您在上一步中登录的调试令牌。
Firebase console
注册令牌后,Firebase后端服务将接受它为有效。