我知道这个问题经常被问到,但是提出的解决方案并没有解决我的问题。
我试着建立一个基本的iOS Firestore应用程序,在一个集合中编写一些文档。
我遵循标准过程,将GoogleService-Info.plist添加到我的项目中,并在启动时调用'FirebaseApp.configure()。
我的Firestore规则如下:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
现在,一旦我试图在一个集合中保存一些东西,Firebase就会返回一个被拒绝的权限错误。
如果我的规则是这样的:
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
这封信被接受了。显然,请求似乎不包含任何身份验证信息,但我找不到有关此的任何其他文档。我错过什么了吗?
谢谢你的帮助!
最佳答案
如果您正在应用程序中使用身份验证,则应使用
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth.uid != null;
}
}
}
只有在应用程序中添加了firebase身份验证时,此操作才有效,但如果未添加,则它将返回PermissionDenied
你也可以用这个方法
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
但这种方法不安全,任何人都可以一次更改整个数据库,而且Firebase不建议您使用这种方法。
如果您处于开发模式,那么使用它并创建数据库,但是如果您要投入生产,您只需要将其更改为
allow read, write: if request.auth.uid != null;
或者你的应用程序中没有身份验证。
allow read, write: if false;
希望这能帮助你更好地理解。
关于ios - iOS Firebase/Firestore权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52422047/