Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Получение ошибки аутентификации при инициализации Firestore Admin SDK на Node js

Автор вопроса: JUAN FELIPE SUÁREZ BURGOSОтветов: 1

Я пытаюсь создать сервер с node js, который обрабатывает данные от клиента и загружает их в Firestore. Я еще новенький. Это код моего сервера:

const express = require('express');
const multer = require('multer');
const path = require('path');
const admin = require('firebase-admin');

let app = express();

let upload = multer();

let serviceAccount = require('./psylocke-774e2adbf0e5.json');

admin.initializeApp({
    credentials: admin.credential.cert(serviceAccount)
});

let db = admin.firestore();

let port = process.env.PORT || 8000;

app.route('/interface').get((_, res) => {
    try {
        res.sendFile(__dirname + '/interface.html');
    } catch (e) {
        res.status(404).send(e.message);
    }
})

app.post('/upload', upload.any(), (req, res) => {
    let test = {
        name:'juan',
        age:15
    };
    db.collection('roots').doc('sampleroot').set(test).then((mess) => {
        console.log("I went through hwere");
        res.send('it worked');
    }).catch((err) => {
        res.send('it didnt work');
        console.log(err);
    });
})

app.listen(port, () => console.log(`Server running on port ${port}`));

А это мой JSON-файл проекта (который мне пришлось скачать с облачных платформ Google):

{
  "type": "service_account",
  "project_id": "psylocke",
  "private_key_id": "<id>",
  "private_key": "<private key>",
  "client_email": "[email protected]",
  "client_id": "113260833969613996508",
  "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": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-ja1c3%40psylocke.iam.gserviceaccount.com"
}

И я получаю следующую ошибку:

Error: Unable to detect a Project Id in the current environment.
To learn more about authentication and Google APIs, visit:
https://cloud.google.com/docs/authentication/getting-started

Странно, что я получаю эту ошибку, поскольку идентификатор проекта фактически указан в json-документе. Кто-нибудь знает, что происходит?

firebasegoogle-cloud-firestore

Ответы

Ответ 1 · рейтинг 1 · Gabe Weiss

Это потому, что Firestore. При инициализацииApp есть возможность передать идентификатор проекта, который вам нужно сделать. Интеграция Firestore с IAM недостаточно хороша (пока) для извлечения из учетной записи службы, особенно потому, что учетные записи служб могут (и часто это делают) указывать на другие проекты, поэтому вы, возможно, не захотите, чтобы это обязательно.

Проверьте эту документацию: https://firebase.google.com/docs/reference/js/firebase для параметров, которые можно передать этому вызову инициализации. Например.:

// Initialize default app
// Retrieve your own options values by adding a web app on
// https://console.firebase.google.com
firebase.initializeApp({
  apiKey: "AIza....",                             // Auth / General Use
  applicationId: "1:27992087142:web:ce....",      // General Use
  projectId: "my-firebase-project",               // General Use
  authDomain: "YOUR_APP.firebaseapp.com",         // Auth with popup/redirect
  databaseURL: "https://YOUR_APP.firebaseio.com", // Realtime Database
  storageBucket: "YOUR_APP.appspot.com",          // Storage
  messagingSenderId: "123456789"                  // Cloud Messaging
});

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы