Отсутствует или недостаточно разрешений даже с общедоступной базой данных - PullRequest
0 голосов
/ 28 октября 2019

У меня был нормально работающий проект Gatsby / firebase, и я остался на неделю, ничего не меняя. Теперь я только что вернулся, чтобы обновить кое-что, и у меня появляется следующая ошибка:

index.js:2177 FirebaseError: Missing or insufficient permissions.
    at new FirestoreError (http://localhost:8000/commons.js:4331:28)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/index.esm.js.JsonProtoSerializer.fromRpcStatus (http://localhost:8000/commons.js:19005:16)
    at JsonProtoSerializer../node_modules/@firebase/firestore/dist/index.esm.js.JsonProtoSerializer.fromWatchChange (http://localhost:8000/commons.js:19502:44)
    at PersistentListenStream../node_modules/@firebase/firestore/dist/index.esm.js.PersistentListenStream.onMessage (http://localhost:8000/commons.js:15457:43)
    at http://localhost:8000/commons.js:15386:30
    at http://localhost:8000/commons.js:15426:28
    at http://localhost:8000/commons.js:5669:20

Я подумал, что у меня может быть какая-то ошибка в моих правилах firebase, тогда я изменил ее на public:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

И я все еще получаю ту же ошибку. Я попытался:

- обновить npm-зависимости

- очистить хранилище приложения

-gatsby clean

и ничего из этого не работает. Аутентификация firebase работает нормально. Любые предположения, где проблема может быть?

РЕДАКТИРОВАТЬ: я использую саг для чтения кода:

firebase.js

...
export const authRef = function() {
  return firebase.auth();
}

export const firestoreRef = function() {
  return firebase.firestore();
}
...
import {firestoreRef, authRef} from './firebase';

function* loadProjectsData() {
  try {

    const firestore = firestoreRef();

    const userId = authRef().currentUser.uid;
    const query =
      firestoreRef()
        .collection('projects')

    const snap = yield call(
      [
        query,
        query.get
      ]
    );
  } catch(error)  {
    console.error(error);
  }
}

1 Ответ

0 голосов
/ 02 ноября 2019

Я обнаружил проблему. В результате член моей команды внес изменения в конфигурации IAM из облака Google, которые отключили учетную запись службы, которая применяет правила firebase в firestore.

С помощью службы поддержки Firebase я смог ее обнаружить. Поэтому я просто проверил историю изменений и отменил ту, которая прервала доступ к базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...