Node.js 使用Passport路由文件问题

Node.js 使用Passport路由文件问题,node.js,authentication,express,routes,passport.js,Node.js,Authentication,Express,Routes,Passport.js,我正在使用NodeJS、Express和PassportJS构建一个web应用程序。我的一条路线出了问题,我弄不懂。当我有: ... app.get('/auth/facebook', passport.authenticate('facebook')); ... 一切似乎都很好。但当我将其更改为: ... app.get('/auth/facebook', function(req, res) { passport.authenticate('facebook'); });

我正在使用NodeJS、Express和PassportJS构建一个web应用程序。我的一条路线出了问题,我弄不懂。当我有:

...
app.get('/auth/facebook', passport.authenticate('facebook'));
...
一切似乎都很好。但当我将其更改为:

...
app.get('/auth/facebook',
  function(req, res) {
    passport.authenticate('facebook');
  });
...
挂起来了?我是否缺少app.get函数中的某些内容?我希望能够做到这一点,因为我希望使路径更加动态,在这里我可以确定passport的身份验证。例如:

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

提供者可以是
facebook
twitter
,或
google

passport.authenticate是中间件,请查看源代码:

authenticate('facebook')返回一个函数,该函数从express获取req、res、next参数并对其进行处理

因此:

这就是你需要的

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