Firebase не может определить идентификатор проекта - PullRequest
0 голосов
/ 19 февраля 2020

это запрос, который я сделал с помощью узла


// Initialize the default app
var admin = require('firebase-admin');

var app = admin.initializeApp({
  credential: admin.credential.applicationDefault(),
  databaseURL: process.env.FIREBASE_DATABASE
});

console.log(process.env.FIREBASE_DATABASE);


router.post('/', (req, res, next) => {

    app.auth().getUserByEmail("j.100233260@gmail.com")
    .then(function(userRecord) {
            // See the UserRecord reference doc for the contents of userRecord.
            console.log('Successfully fetched user data:', userRecord.toJSON());
            res.json(userRecord.toJSON())
        })
        .catch(function(error) {
                console.log('Error fetching user data:', error);
                res.json(error)

            });

        }

        );

Я установил env var на моей машине

enter image description here

для своей базы данных Firebase я использовал env

enter image description here

, заданный как

databaseURL: "https://fssssss.firebaseio.com",

от администратора Firebase GUI,

ошибка в Почтальоне, когда я запрашиваю этот маршрут

{
    "code": "app/invalid-credential",
    "message": "Failed to determine project ID: Error while making request: getaddrinfo ENOTFOUND metadata.google.internal metadata.google.internal:80. Error code: ENOTFOUND"
}

Я проследовал за документами, и Google не дал результатов, не зная, что делать. спасибо.

1 Ответ

0 голосов
/ 19 февраля 2020

Это не работает так, как вы ожидаете:

admin.credential.applicationDefault()

Вы не можете использовать это на сервере, которым вы управляете, без дополнительной настройки. Это работает само по себе только при запуске в службах Google, когда вы хотите использовать учетную запись службы по умолчанию для вашего проекта. При запуске на вашем собственном сервере, по умолчанию нет. Вы должны быть явными и загружать учетные данные службы для использования во время инициализации. Как минимум, вам нужно будет следовать инструкциям в документации :

Чтобы аутентифицировать учетную запись службы и авторизовать ее для доступа к службам Firebase, вы должны сгенерировать частную файл ключа в формате JSON.

Чтобы создать файл личного ключа для учетной записи службы:

  • В консоли Firebase откройте «Настройки»> «Учетные записи служб».
  • Нажмите «Создать новый закрытый ключ», затем подтвердите, нажав «Создать ключ».
  • Надежно сохраните файл JSON, содержащий ключ.

При авторизации через учетную запись службы у вас есть два выбор для предоставления учетных данных для вашего приложения. Вы можете либо установить переменную среды GOOGLE_APPLICATION_CREDENTIALS, либо явно указать путь к ключу учетной записи службы в коде. Первый вариант более безопасный и настоятельно рекомендуется.

Поэтому вам нужно будет загрузить файл учетной записи службы, правильно установить GOOGLE_APPLICATION_CREDENTIALS, тогда ваш код будет работать. Учетные данные учетной записи службы не являются обязательными.

...