繁体   English   中英

快照侦听器中未捕获的错误:FirebaseError:缺少权限或权限不足

[英]Uncaught Error in snapshot listener: FirebaseError: Missing or insufficient permissions

我正在尝试通过使用 onSnapshot 侦听器获取从 firebase 显示的帖子数据,但它显示此 Firebase 错误。 有人可以帮助解决这个错误吗

应用程序.js:

import { useState, useEffect } from 'react';
import './App.css';
import loggo from './icons/loggo.svg';
import Post from './Components/Post.js';
import { db } from './firebase';

function App() {
  const [posts, setPosts] = useState([]);
  useEffect(() => {
    db.collection('posts').onSnapshot(snapshot => {
      setPosts(snapshot.docs.map(doc => doc.data()));
    })
  }, []);

  return (
    <div className="App">
      <div className="app_header">
        <img className="header_Image" src={loggo} alt="insta" />
      </div>
      {
        posts.map(post => (
          <Post username={post.username} caption={post.caption} imageUrl={post.imageUrl} />
        ))
      }
    </div >
  );
}
export default App;

如果您使用自己的 Firestore,请转到管理控制台并将数据库规则更改为:

allow read, write: if true;

快照侦听器至少需要读取权限。 (包括 get 和 list),因此您的“发布”收集规则至少应为:

allow read;

因为它是一个帖子集,所以我假设您只想允许经过身份验证的用户写权限:

allow write : if request.auth != null;

所以所有这些将是:

 rules_version = '2';
 service cloud.firestore {
    match /databases/{database}/documents {

      //A read  is : get and list, 
      //A write is : create, update, and delete. you can separate them if you want

      match /posts/{post} {  //this applies to post collection
         allow read;
         allow write : if request.auth != null;
      }

      // other collections ....
    }
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM