Решить «7 PERMISSION_DENIED: вызывающий не имеет разрешения» при вызове FirestoreAdminClient.exportDocuments - PullRequest
0 голосов
/ 04 февраля 2020

Вот как мы аутентифицируем и вызываем FirestoreAdminClient.

import fs from 'fs';
import firebaseAdmin from 'firebase-admin';

const pathToServiceAccountKeyFile = '/path/to/service/account/key.json';

const serviceAccountKeyJSON = fs
  .readFileSync(pathToServiceAccountKeyFile)
  .toString();

const serviceAccountKeyObject = JSON.parse(serviceAccountKeyJSON);

firebaseAdmin.initializeApp({
  credential: firebaseAdmin.credential.cert(serviceAccountKeyObject)
});

const adminClient = new firebaseAdmin.firestore.v1.FirestoreAdminClient({
  keyFilename: pathToServiceAccountKeyFile
});

adminClient
  .exportDocuments({
    name: adminClient.databasePath('firebase-test-project-id', '(default)'),
    outputUriPrefix: 'gs://firebase-test-project-backups'
  })
  .then(response => console.log(response));

Это выходные данные оператора console.log.

7 PERMISSION_DENIED: The caller does not have permission

  at Object.callErrorFromStatus (node_modules/@grpc/grpc-js/build/src/call.js:30:26)
  at Http2CallStream.call.on (node_modules/@grpc/grpc-js/build/src/client.js:96:33)
  at process.nextTick (node_modules/@grpc/grpc-js/build/src/call-stream.js:75:22)

Здесь мы создали сервис ключ счета.

enter image description here

Ссылки:

https://googleapis.dev/nodejs/firestore/latest/index.html

1 Ответ

1 голос
/ 07 февраля 2020

Вам необходимо предоставить дополнительные разрешения для своих учетных записей служб, если вы создали учетную запись службы через консоль Firebase. Список необходимых разрешений для импорта и экспорта данных через API администрирования Firestore приведен здесь:

https://firebase.google.com/docs/firestore/manage-data/export-import

...