0

I have an application node js using express for authentication via facebook but the url /auth/facebook/callback does not load.

Dependencies version: Express: 4.13.3 Passport 0.3.0 Passport-facebook 2.0.0

app.js

var app = express();


app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');


app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));


passport.use(new FacebookStrategy({
  clientID: '806175282757975',
  clientSecret: '*************',
  callbackURL: "http://localhost:3000/auth/facebook/callback"
},
function(accessToken, refreshToken, profile, done) {

  process.nextTick(function () {

        return done(null, profile);
      });
    }
  ));

app.use(function(req,res,next){
    req.passport = passport;
    next();
});

app.use('/', routes);
app.use('/users', users);

module.exports = app;

routes/index.js

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.get('/auth/facebook', function(req, res, next){
    req.passport.authenticate('facebook')(req, res, next);
});

router.get('/auth/facebook/callback', function(req, res, next){
    req.passport.authenticate('facebook', { successRedirect: '/',
                                  failureRedirect: '/login' });
});

module.exports = router;

No error is returned on console.

SoabTI
  • 151
  • 2
  • 10

1 Answers1

1

In routes/index.js in /auth/facebook/callback route you forgot about calling authenticate method with req, res, next arguments. That is why your application was stuck ('next' callback was never called).

var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

router.get('/auth/facebook', function(req, res, next){
    req.passport.authenticate('facebook')(req, res, next);
});

router.get('/auth/facebook/callback', function(req, res, next){
    req.passport.authenticate('facebook', {
        successRedirect: '/',
        failureRedirect: '/login' }
    )(req, res, next); // missing function call
});

module.exports = router;
ezpn
  • 1,748
  • 15
  • 22