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

fd3cxomn  于 2023-06-20  发布在  Java
关注(0)|答案(3)|浏览(110)

我试图通过使用onSnapshot侦听器从firebase显示的帖子数据,但显示此Firebase错误。有人能帮我解决这个问题吗
App.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;
yzuktlbb

yzuktlbb1#

如果您使用自己的firestore,转到管理控制台并将数据库规则更改为:
allow read, write: if true;

lzfw57am

lzfw57am2#

快照监听器至少需要权限。(包括get和list),所以你的“post”收集规则至少应该是:

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 ....
    }
 }
fzsnzjdm

fzsnzjdm3#

[2023年更新]
它基本上已经超时了,所以你只需要去你的

  • Firebase控制台
  • Firestore数据库
  • 规则

将www.example.com值更改为未来日期(& C)timestamp.date values to future dates
例如

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if
          request.time < timestamp.date(2023, 6, 27); <--- change this value
    }
  }
}

相关问题