nodejs authenticate node.js express passport.js

node.js - authenticate - nodejs facebook login



pasaporte-facebook: ¿cómo configurar dinámicamente callbackURL? (3)

Encontré la solución, tanto la ruta de redireccionamiento de autenticación como la ruta de devolución de llamada deberían incluir passport.authenticate () con la función (req, res, next).

Seguí el ejemplo en http://passportjs.org/guide/authenticate/ para una devolución de llamada personalizada

y los comentarios en https://github.com/jaredhanson/passport-facebook/issues/2 para callbackURL personalizado

Sigo este ejemplo para configurar una estrategia de Facebook: https://github.com/jaredhanson/passport-facebook/blob/master/examples/login/app.js

Quiero establecer dinámicamente el callbackURL, es decir: el acceso de usuario / posts / 34, por lo que la devolución de llamada será / posts / 34 / callback

¿Cómo puedo lograr algo como esto?


Solo siguiendo la respuesta de Gal, aquí está esa solución combinada:

app.get(''/auth/facebook'', (req, res, next) => { passport.authenticate(''facebook'')(req, res, next) }) app.get("/auth/facebook/callback", (req, res, next) => { passport.authenticate(''facebook'', (err, user, info) => { if (err) { return next(err); } if (!user) { return res.redirect(''/login'')} req.logIn(user, function(err) { if (err) { return next(err); } return res.redirect(''/users/'' + user.uid) }); })(req, res, next) })

Tenga en cuenta que tiene que iniciar sesión específicamente en el usuario.


Yo uso esta solución, es bastante fácil. Guardo la última url en la sesión y la recojo después. Si pasa la url de devolución de llamada a fb directamente, debe permitir todas las rutas diferentes, lo que es un obstáculo.

app.get ''/auth/facebook/'', routesService.clean, (req, res, next) -> req.session.redirect = req.query.redirect if req.session? && req.query.redirect? passport.authenticate(''facebook'', { scope: [''user_friends''] }) req, res, next return app.get ''/auth/facebook/callback'', passport.authenticate(''facebook'', failureRedirect: ''/login''), (req, res) -> # Successful authentication, redirect home. if req.session?.redirect? rediredUrl = req.session.redirect delete req.session.redirect res.redirect ''/#!''+ rediredUrl else res.redirect ''/'' return