Неперехваченная ошибка в прослушивателе моментальных снимков: FirebaseError: Отсутствуют или недостаточны разрешения

Я пытаюсь получить данные о сообщениях, отображаемых из firebase, с помощью прослушивателя onSnapshot, но он показывает эту ошибку 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;

person Sai prakash    schedule 28.11.2020    source источник


Ответы (2)


Если вы используете свой собственный firestore, перейдите в консоль администратора и измените правило базы данных на:

allow read, write: if true;

person farvilain    schedule 28.11.2020

Для прослушивателя снимков требуется как минимум разрешение на чтение. (который включает в себя как 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 ....
    }
 }
person pref    schedule 13.12.2020