Firestore выдает ошибку разрешений только после входа в систему с помощью React /. Redux

#reactjs #firebase #google-cloud-firestore #react-redux #react-redux-firebase

#reactjs #firebase #google-cloud-firestore #react-redux #react-redux-firebase

Вопрос:

Я создаю приложение, используя React / Redux и Firestore. Я делал это раньше с Angular и React . Разрешения для моей базы данных firestore широко открыты для целей разработки.

Когда я не вошел в систему, все работает хорошо. Однако, когда я вхожу в систему, я получаю сообщение об ошибке, что у меня отсутствуют или недостаточно разрешений.

Вот мой файл правил:

 rules_version = '2';
service cloud.firestore {

    match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if true;
    }
  }
}
  

Вот мой файл package.json.

 redux-firestore listener error: FirebaseError: Missing or insufficient permissions.
at new n (webpack-internal:///336:485:23)
at eval (webpack-internal:///336:9625:28)
at eval (webpack-internal:///336:9626:18)
at n.onMessage (webpack-internal:///336:9659:10)
at eval (webpack-internal:///336:9565:26)
at eval (webpack-internal:///336:9596:37)
at eval (webpack-internal:///336:5192:31)
  

У меня были немалые трудности с версиями и заставить все работать. Возможно ли, что это аналогичный конфликт?

 {
"name": "triviaapp",
"version": "1.0.0",
"main": "index.js",
"author": "Joshua Foxworth",
"license": "MIT",
"scripts": {
  "serve": "live-server public/",
  "build": "webpack",
  "dev-server": "webpack-dev-server"
},
"dependencies": {
  "@fortawesome/fontawesome-svg-core": "^1.2.32",
  "@fortawesome/free-solid-svg-icons": "^5.15.1",
  "@fortawesome/react-fontawesome": "^0.1.12",
  "babel-cli": "6.24.1",
  "babel-core": "6.25.0",
  "babel-plugin-transform-class-properties": "6.24.1",
  "babel-plugin-transform-object-rest-spread": "6.23.0",
  "babel-preset-env": "1.5.2",
  "babel-preset-react": "6.24.1",
  "bootstrap": "^4.5.3",
  "css-loader": "0.28.4",
  "firebase": "^8.0.2",
  "firebase-tools": "^8.15.0",
  "live-server": "^1.2.0",
  "node-sass": "^5.0.0",
  "normalize.css": "7.0.0",
  "react": "16.14.0",
  "react-bootstrap": "^1.4.0",
  "react-dom": "16.14.0",
  "react-modal": "2.2.2",
  "react-redux": "5.0.5",
  "react-redux-firebase": "2.2.4",
  "react-router-dom": "4.1.2",
  "redux": "3.7.2",
  "redux-firestore": "^0.14.0",
  "redux-thunk": "^2.3.0",
  "sass-loader": "6.0.6",
  "style-loader": "0.18.2",
  "uuid": "3.1.0",
  "validator": "8.0.0",
  "webpack-dev-server": "2.5.1"
},
"devDependencies": {
  "@babel/core": "^7.12.3",
  "@babel/preset-env": "^7.12.1",
  "babel-loader": "^7.1.5",
  "webpack": "^3.12.0"
}
  

}

Вот действие, в котором я добавляю новый «вопрос». Это работает, если я не вошел в систему, но не если я вошел в систему.

 // These are action creators. This is possible because we are using the middleware thunk

export const createQuestion = (question) => {
    console.log(question);
    return (dispatch, getState, {getFirebase, getFirestore}) => {
        // make async call
        const firestore = getFirestore();
        console.log(firestore);
        firestore.collection('questions').add({
            ...question,
            userId : 'tbd',
            userName : 'tbd',
            dateCreated:new Date()
        }).then(()=>{
            dispatch({type:'CREATE_QUESTION', question});
        
        }).catch((err)=>{
            dispatch({type:'CREATE_QUESTION_ERROR', err});
        })
    }
}
  

Комментарии:

1. Ошибка предполагает, что на самом деле это проблема с правилами безопасности. Пожалуйста, отредактируйте вопрос, чтобы показать код, который выполняет запрос, вместе с вашими правилами безопасности.

2. Я опубликовал правила. Я использую новый для меня шаблон firestoreConnect. Я считаю, что опубликованная часть обрабатывает запрос.

3. Я не вижу причин для сбоя этого запроса только при входе пользователя в систему.

Ответ №1:

Я публикую «решение» здесь, чтобы кто-нибудь столкнулся с этой проблемой, они не тратили столько времени, сколько у меня. Я вручную создал пользователя для работы в системе firebase. По каким-то причинам это была проблема. Как только я создал больше приложений и worker с пользователем, созданным через приложение, все было в порядке.

Вот так.