Подтвердить что ты не робот

Безопасный HTTP-триггер для облачных функций для Firebase

Есть ли способ проверить, разрешен ли пользователь firebase перед запуском функции облака? (Или внутри функции)

4b9b3361

Ответ 1

Да. Вам необходимо будет отправить токен Firebase ID вместе с запросом (например, в заголовок Authorization запроса AJAX), а затем проверить его с помощью Firebase Admin SDK. Подробный пример в хранилище образцов объектов Cloud для Firebase. Он выглядит примерно так (сокращенно для сообщения SO):

const functions = require('firebase-functions');
const admin = require('firebase-admin');
const cors = require('cors')();

const validateFirebaseIdToken = (req, res, next) => {
  cors(req, res, () => {
    const idToken = req.headers.authorization.split('Bearer ')[1];
    admin.auth().verifyIdToken(idToken).then(decodedIdToken => {
      console.log('ID Token correctly decoded', decodedIdToken);
      req.user = decodedIdToken;
      next();
    }).catch(error => {
      console.error('Error while verifying Firebase ID token:', error);
      res.status(403).send('Unauthorized');
    });
  });
};

exports.myFn = functions.https.onRequest((req, res) => {
  validateFirebaseIdToken(req, res, () => {
    // now you know they're authorized and 'req.user' has info about them
  });
});