Аутентификация администратора Firebase не выполняется на стороне сервера из-за отсутствия «private_key» - PullRequest
0 голосов
/ 29 мая 2018

Я размещаю функцию node.js в Google Firebase, и я хотел бы создавать и обновлять учетные записи пользователей на стороне сервера .Файл моей учетной записи службы json выглядит следующим образом:

{
    "apiKey"           : ""
    "authDomain"       : ""
    "databaseURL"      : ""
    "projectId"        : ""
    "storageBucket"    : ""
    "messagingSenderId": ""
}

Я удалил поля по причинам.Когда я загружаю учетные данные и создаю экземпляр admin с помощью:

import * as admin     from 'firebase-admin'    ;
import * as functions from 'firebase-functions';

const accountKeyPath = path.join(__dirname, '../credentials/serviceAccountKey.json')
const accountKey     = require(accountKeyPath);

const firebaseAdmin = admin.initializeApp( accountKey );

firebaseAdmin достаточно для crud базы данных.Однако он не может создавать новых пользователей, пока я не объявлю это с помощью:

const firebaseAdmin = admin.initializeApp({
      credential: admin.credential.cert(accountKey)
    , databaseURL: "..."
});

Или так, как кажется.Когда я запускаю это, я получаю ошибку:

            throw new 

error_1.FirebaseAppError(error_1.AppErrorCodes.INVALID_CREDENTIAL, errorMessage);
            ^

Error: Certificate object must contain a string "private_key" property.

Это необъяснимо для меня, потому что я не знаю, как получить служебную учетную запись json с private_key.Предполагается ли создавать его каждый раз при запуске сервера?

1 Ответ

0 голосов
/ 29 мая 2018

Ваш JSON полностью неверен для firebase-admin SDK.Пожалуйста, ознакомьтесь с документами о том, как получить файл JSON учетной записи службы: https://firebase.google.com/docs/admin/setup#add_firebase_to_your_app

Он должен иметь следующий формат:

{
  "type": "service_account",
  "project_id": "...",
  "private_key_id": "...",
  "private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n",
  "client_email": "...",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/example@iam.gserviceaccount.com"
}

Редактировать:

Я заметил васВы импортируете firebase-functions, в этом случае вам вообще не нужно обслуживать учетную запись JSON.Просто позвоните:

admin.initializeApp(functions.config().firebase);

См. https://firebase.google.com/docs/admin/setup#initialize_the_sdk

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