Пользовательская аутентификация OAuth Firebase

FireBase, похоже, поддерживает аутентификацию на основе OAuth от Facebook, Twitter, Google, GitHub. А как насчет другого провайдера OAuth? Было бы здорово, если бы был общий вариант "OAuth", в котором помимо указания ключа API и секретности вы указывали любую другую информацию.

Возможно ли использовать существующие модули аутентификации на базе OAuth FireBase без переноса моего собственного модуля аутентификации OAuth для FireBase, возможно, с помощью одного из "встроенных" механизмов OAuth? Какой из них наиболее общий, если да?

Ответ 1

Я тоже некоторое время боролся с этим, и вот как я это сделал для своего проекта. Запустите node.js express сервер, который будет иметь следующую роль:

  • получить req из вашего внешнего приложения
  • перенаправить пользователя на страницу oauth
  • вернитесь к node.js в случае успеха/ошибки и вычислите токен, необходимый для firebase, чтобы успешно войти в систему пользователя.
  • res с файлом cookie, содержащим этот токен, и перенаправить пользователя обратно в приложение frontend для завершения процесса.

Вам нужно будет запустить сервер node на разных vps, чтобы ваше приложение работало, но вам, вероятно, понадобится его, если у вас есть большее приложение, которое должно запускать личные вещи на бэкэнд, а не все авансовые.

Ответ 2

Firebase теперь имеет 5 аутентификаций на основе OAuth, Facebook, Twitter, Google, GitHub и Custom Auth. Использование пользовательской проверки подлинности Firebase дает вам полный контроль над аутентификацией пользователя, позволяя вам выполнять аутентификацию с использованием защищенных JSON-веб-маркеров (JWT). Таким образом, вы можете указать дополнительные опции API Key и Secret. Например:

var logInAndThen = function(options) {
 var secret = '********************';
 var tokenGenerator = new FirebaseTokenGenerator(secret);
 var token = tokenGenerator.createToken(credentials[options.userType ||
 'admin'
};