kentcdodds
kentcdodds

Reputation: 29041

Routes file issues with Passport

I'm using NodeJS, Express, and PassportJS to build a web application. I'm having a problem with one of my routes which I can't make any sense out of. When I have:

...
app.get('/auth/facebook', passport.authenticate('facebook'));
...

Everything seems to work fine. But when I change that to:

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

It hangs? Am I missing something on the app.get function? I want to be able to do this because I want to make the path a little more dynamic where I determine what passport authenticates. For example:

...
app.get('/auth/:provider',
  function(req, res) {
    passport.authenticate(req.params.provider);
  });
...

Where provider could be facebook, twitter, or google...

Upvotes: 2

Views: 1140

Answers (1)

generalhenry
generalhenry

Reputation: 17319

passport.authenticate is middleware, take a gander at the source: https://github.com/jaredhanson/passport/blob/master/lib/passport/middleware/authenticate.js

passport.authenticate('facebook') returns a function that takes the req, res, next parameters from express and handles them.

so:

app.get('/auth/:provider',
  function(req, res, next) {
    passport.authenticate(req.params.provider)(req, res, next);
  });

is what you need.

Upvotes: 7

Related Questions