Как загрузить ключ администратора Firebase в узел JS? - PullRequest
0 голосов
/ 17 октября 2019

Я хочу использовать FireBase Admin SDK, чтобы предоставить моему узловому серверу бесплатный доступ к моей базе данных. Это код index.js в моей папке functions:

const functions = require("firebase-functions");
const admin = require("firebase-admin");

// Initialize app
admin.initializeApp({
  credential: admin.credential.cert("logininfo.json"),
  databaseURL: "https://thenameofmydatabase.firebaseio.com/",
  databaseAuthVariableOverride: {
    uid: "nameserver"
  }
});

В этой же папке у меня есть файл logininfo.json, который выглядит примерно так (ключи подвергались цензуре по понятным причинам):

{
  "type": "service_account",
  "project_id": "...",
  "private_key_id": "...",
  "private_key": "...",
  "client_email": "...",
  "client_id": "...",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "..."
}

Однако при попытке развертывания на хостинге firebase появляется ошибка Failed to parse certificate key file: Error: ENOENT: no such file or directory.

Как это исправить, и есть ли более безопасный / элегантный способ справиться с этим? Могу ли я просто изменить переменную GOOGLE_APPLICATION_CREDENTIALS где-нибудь на хостинге firebase?

1 Ответ

2 голосов
/ 17 октября 2019

Это можно сделать двумя различными способами:

По пути:

    const functions = require("firebase-functions");
    const admin = require("firebase-admin");
    const serviceAccount = require("path/to/logininfo.json");

    // Initialize app
    admin.initializeApp({
      credential: admin.credential.cert(serviceAccount),
      databaseURL: "https://thenameofmydatabase.firebaseio.com/",
      databaseAuthVariableOverride: {
        uid: "nameserver"
      }
    });

По объекту:

const functions = require("firebase-functions");
        const admin = require("firebase-admin");

        // Initialize app
        admin.initializeApp({
          credential: admin.credential.cert({
               "type": "service_account",
               "project_id": "...",
               "private_key_id": "...",
               "private_key": "...",
               "client_email": "...",
               "client_id": "...",
               "auth_uri": "https://accounts.google.com/o/oauth2/auth",
               "token_uri": "https://oauth2.googleapis.com/token",
               "auth_provider_x509_cert_url": 
               "https://www.googleapis.com/oauth2/v1/certs",
               "client_x509_cert_url": "..."
        }),
          databaseURL: "https://thenameofmydatabase.firebaseio.com/",
          databaseAuthVariableOverride: {
            uid: "nameserver"
          }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...