#node.js #firebase #firebase-authentication #webauthn
#node.js #firebase #firebase-аутентификация #webauthn
Вопрос:
Это в моем app.js где я импортирую firebase и инициализирую его
const firebase = require('firebase');
firebase.initializeApp({
apiKey: ************,
authDomain: ****************,
databaseURL: **********",
projectId: ********,
storageBucket: ***********,
messagingSenderId: **********,
appId: *********,
measurementId: *********
});
app.use( (req, res, next) => {
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
req.session.isLoggedIn = true;
} else {
req.session.isLoggedIn = false;
}
});
res.locals.isAuthed = req.session.isLoggedIn;
res.locals.csrfToken = req.csrfToken();
next();
});
Но в auth.js Контроллер после импорта firebase он не будет работать
const firebase = require('firebase');
exports.postSignup = (req, res, next) => {
const name = req.body.name;
const email = req.body.email;
const password = req.body.password;
const confirmPassword = req.body.password;
if(password === confirmPassword){
firebase.auth().createUserWithEmailAndPassword(email, password)
.then(function(firebaseUser) {
const user = new User({
name: name,
email: email,
cart: {items: []}
});
return user.save();
})
.then(result => {
res.redirect('/login');
})
.catch(error => {
if (error.code == 'auth/email-already-in-use') {
//'auth/wrong-password'
req.flash('error', 'Already Registered');
return res.redirect('/signup');
}
});
}
Возникает эта ошибка
Ошибка типа: firebase.auth.createUserWithEmailAndPassword не является функцией
при экспорте.postSignup (/media/rishav/Пространство проекта /Проекты / Веб-разработка/ Экспресс-узел /Контроллеры/auth.js:95:23)
const firebase = require('firebase-admin');
// Fetch the service account key JSON file contents
const serviceAccount = require("../Data/firebase-service-account.json");
// Initialize the app with a service account, granting admin privileges
firebase.initializeApp({
credential: firebase.credential.cert(serviceAccount),
databaseURL: "****",
databaseAuthVariableOverride: null
});
Ответ №1:
Вы, вероятно, хотели сказать:
firebase.auth().createUserWithEmailAndPassword(...)
Обратите внимание на скобки после «auth».
Но большая проблема заключается в том, что вы не должны использовать веб-клиентскую библиотеку Firebase в своем приложении nodejs. Вместо этого вы должны использовать Firebase Admin SDK, который представляет собой совершенно другой модуль и запускается с правами администратора, инициализированными учетной записью службы. Вы можете использовать это для создания учетных записей пользователей в своем бэкэнд-коде.