Я новичок ie в узле express. Я просто хочу вернуть пользователю объект User
после аутентификации с помощью Passport-facebook . Я попытался просмотреть некоторые примеры проектов и увидел, что они каким-то образом получают объект пользователя из successRedirect
.
Но в моем случае я получаю undefined
.
res.json({ message: "You are logged in!", user: req.user, info: req.info })
Весь мой код контроллера:
const express = require("express")
const router = express.Router()
const passport = require("passport")
const strategy = require("passport-facebook")
const util = require("util")
const db = require("../../models")
const userModel = require("../../models/user")
const User = userModel(db.sequelize, db.Sequelize)
const Op = db.Sequelize.Op
const FacebookStrategy = strategy.Strategy;
passport.serializeUser(function(user, done) {
done(null, user)
})
passport.deserializeUser(function(obj, done) {
done(null, obj)
})
// TODO: - Provide LIVE FB details in `.env`.
const strat = {
clientID: process.env.DEV_FACEBOOK_CLIENT_ID,
clientSecret: process.env.DEV_FACEBOOK_CLIENT_SECRET,
callbackURL: process.env.DEV_FACEBOOK_CALLBACK_URL,
profileFields: ["email", "name"]
}
passport.use(
new FacebookStrategy(strat, (accessToken, refreshToken, profile, done) => {
const { id, email, first_name, last_name } = profile._json
// We're using fbid as "id".
const newUser = {
id: id,
email: email,
first_name: first_name,
last_name: last_name
}
User.findByPk(id).then(data => {
if (data) {
console.log("Got data! ✅")
done(null, data)
} else {
User.create(newUser).then(data => {
console.log("Created new user! ✅")
done(null, data)
})
}
}).catch(err => {
done(err, null)
})
})
)
// Begin loggin in via Facebook
exports.loginViaFacebook = passport.authenticate("facebook")
// Callback
exports.callback = passport.authenticate("facebook", {
session: false,
successRedirect: "/api/auth/success",
failureRedirect: "/api/auth/failure"
})
// Success
exports.success = (req, res, next) => {
console.log("Success! ✅")
res.json({ message: "You are logged in!", user: req.user, info: req.info })
}
// Failure
exports.failure = (req, res, next) => {
res.json({ message: "Authentication failed!" })
}