我在从 Angular Fire 调用 firestore 函数时遇到了这个问题。 当我成功通过身份验证时,我将获取并火存储当前用户文档 ID,以获取与用户关联的其他数据。
// In App.Component
ngOnInit(): void {
this.afAuth.onAuthStateChanged((user) => {
if (user) {
// Some firestore call like
// let p: QuerySnapshot<AppUser> = await this.firestore.collection<AppUser>('users').ref.where('uid', '==', 'myuserid').get();
// --> FirebaseError: [code=permission-denied]: Missing or insufficient permissions.
}
});
}
我不明白,因为我的 firestore 规则是:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
因此每个人都可以读写。
我面临这个错误,因为我已经按照 Firebase 控制台“AppCheck”的建议强制执行了安全性,现在,据我记得,只接受特定的应用程序并且我已经解决了 recaptcha,所以发生这种情况是因为缺少 recaptcha 配置在我的应用程序中?或者也许它不相关? https://firebase.google.com/docs/app-check/web/recaptcha-provider
按照这些步骤,事情就成功了:
所以规则还不够,在我的情况下需要正确配置 AppCheck