cho*_*kie 5 firebase firebase-authentication google-cloud-firestore
我试图允许用户videoFeedback从网络应用读取和写入我的 Firestore集合,并收到“权限缺失或不足”错误。如何确保使用正确的用户身份验证(或任何身份验证)发送我对 Firestore 的请求?
这是针对使用 Firestore 和匿名 Firebase 身份验证的 Angular 应用程序。我已经设置了一个匿名用户。我想videoFeedback从网络应用程序而不是后端向我的收藏添加一个文档。我已经阅读了 Firestore 文档的官方页面:
使用 Firebase 进行匿名
身份验证在网站上使用 Firebase 身份验证入门
等等,并阅读有关此主题的所有 SO 问题。
我的 Firestore 对象已经正确设置(我知道,因为如果我的安全规则不需要非空 request.auth,我可以读/写数据库)。
非常感谢您的帮助。
private db: AngularFirestore;
public initFirebaseApp() {
firebase.initializeApp(this.firebaseConfig);
}
public anonymousAuth() {
firebase.auth().signInAnonymously().catch(function(error) {
console.log("ERROR: " + String(error.errorCode) +
" " + String(error.errorMessage))
});
console.log("User is authorized");
}
this.initFirebaseApp();
this.anonymousAuth();
let date_created = new Date().toLocaleString();
let feedback = {
"feedback": "FAKE_FEEDBACK",
"rating": -1,
'created': date_created,
};
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log(user.uid)
this.db.collection('videoFeedback').add(feedback);
}
}.bind(this));
Run Code Online (Sandbox Code Playgroud)
我的安全规则看起来像这样
service cloud.firestore {
match /databases/{database}/documents {
match /videoFeedback/{feedback} {
allow read, write: if request.auth != null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用此配置,我得到以下输出:
User is authorized
JAZe9dsIMtdyNe2dhndleIcn9nd2
ERROR Error: Uncaught (in promise): FirebaseError: [code=permission-denied]: Missing or insufficient permissions.
FirebaseError: Missing or insufficient permissions.
at new FirestoreError (index.cjs.js:352)
at index.cjs.js:7274
at Y.<anonymous> (index.cjs.js:7219)
...
Run Code Online (Sandbox Code Playgroud)
当我将我的安全规则替换为
service cloud.firestore {
match /databases/{database}/documents {
match /videoFeedback/{feedback} {
allow read, write;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了相同的,减去权限错误。这让我认为这是我的请求发送方式的问题,而不是我发送的数据或 Firestore 数据库的设置。
User is authorized
JAZe9dsIMtdyNe2dhndleIcn9nd2 (or some random string)
Run Code Online (Sandbox Code Playgroud)
我需要做什么才能使用非空 request.auth.uid 发送我的请求?
| 归档时间: |
|
| 查看次数: |
1506 次 |
| 最近记录: |