Cuando mi aplicación se redirige a "/", req.user no está definido, pero en la devolución de llamada de Twitter, req.user me proporciona los datos que estoy buscando. Pierdo los datos en la redirección. Todavía hay información en req para "/" pero no req.user que necesito.
¿Alguien puede ayudarme a resolver este problema?
Este es mi index.js
const express = require('express') const app = express() const cookieSession = require('cookie-session') const passport = require('passport'); require('./passport') const isLoggedIn = require('./Middleware/auth') app.use(cookieSession({ name: 'twitter-auth-session', keys: ['key1', 'key2'] })) app.use(passport.initialize()); app.use(passport.session()); app.get('/auth/error', (req, res) => res.send('Unknown Error')) //, isLoggedIn, app.get('/', (req,res)=>{ console.log('HELLOOOOO', req.user) res.send(`Hello`) }); app.get('/logout', (req, res) => { req.session = null; req.logout(); res.redirect('/'); }) app.get('/auth/twitter',passport.authenticate('twitter')); app.get('/auth/twitter/callback',passport.authenticate('twitter', { failureRedirect: '/auth/error' }), function(req, res) { // console.log("REQUEST", req.user) res.redirect('/'); }); app.listen(8000,()=>{ console.log('Server is up and running at the port 8000') })Este es mi middleware de pasaporte.js:
const passport = require('passport'); const TwitterStrategy = require('passport-twitter').Strategy; passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(user, done) { done(null, user); }); passport.use(new TwitterStrategy({ consumerKey: "xxxxxxxxxxx", consumerSecret: "xxxxxxxxxxx", callbackURL: "http://www.localhost:8000/auth/twitter/callback", }, function(accessToken, refreshToken, profile, cb) { return cb(null, profile); }));Ok, después de algunas pruebas y muchos errores, el problema parecía estar en la forma en que estaba usando las sesiones o la biblioteca de sesiones de cookies.
Agregué la biblioteca
const session = require('express-session')Cambié
app.use(cookieSession({ name: 'twitter-auth-session', keys: ['key1', 'key2'] }))a
app.use(session({ secret: 'secret' }))Y eso parece haber arreglado las cosas, en caso de que todos estén viendo esta respuesta realmente oscura, jaja.