3
我試圖建立與多個控制器綁定快遞路線,當然他們應該接收功能,這就是我想:快速路由器的多個處理程序發出
authRouter.get('/login/redirect/:provider', controllers.handleOAuth2Redirect, controllers.jwt);
這有時工作,有時不,唯一的變化時作品或不是最小的代碼的變化,可以是一個require
線,表達式等
這被拋出的錯誤:
Error: Route.get() requires callback functions but got a [object Object]
所以下面的代碼是完整的工作控制器文件:
'use strict';
var passport = require('passport');
var FacebookStrategy = require('passport-facebook').Strategy;
var TwitterStrategy = require('passport-twitter').Strategy;
var InstagramStrategy = require('passport-instagram').Strategy;
var OAuth2Strategy = require('passport-oauth2').Strategy;
var facebook_scope = ['email', 'user_about_me','user_friends','publish_actions'];
var passportFacebookOptions = {scope: facebook_scope};
passport.use(new FacebookStrategy({
clientID: process.env.FACEBOOK_FINALCUT_APP_ID,
clientSecret: process.env.FACEBOOK_FINALCUT_APP_SECRET,
callbackURL: 'http://localhost:9248/auth/login/redirect/fb'
},
function (accessToken, refreshToken, params, profile, done) {
return done(null, profile, params);
}));
passport.use(new InstagramStrategy({
clientID: process.env.INSTAGRAM_FINALCUT_CLIENT_ID,
clientSecret: process.env.INSTAGRAM_FINALCUT_CLIENT_SECRET,
callbackURL: 'http://localhost:9248/auth/login/redirect/ig'
},
function (accessToken,refreshToken,profile,done) {
return done(null, profile, {tokens: {accessToken: accessToken, refreshToken: refreshToken}});
}));
function oauth2ProviderLogin (request,response,next) {
var provider = request.query.provider;
switch (provider) {
case 'fb':
passport.authenticate('facebook')(request,response,next);
break;
case 'ig':
passport.authenticate('instagram')(request,response,next);
break;
}
}
function handleOAuth2Redirect (request,response,next) {
var provider = request.params.provider;
switch (provider) {
case 'fb':
passport.authenticate('facebook', {session:false})(request,response,next);
break;
case 'ig':
passport.authenticate('instagram', {session:false})(request,response,next);
break;
}
}
function jwt (request,response,next) {
var jwt = require('jsonwebtoken');
var token = jwt.sign({auth: request.authInfo}, '623145ca-7749-11e5-8bcf-feff819cdc9f');
return response.send({user: request.user, auth: token});
}
module.exports = (function() {
var authController = {
oauth2ProviderLogin: oauth2ProviderLogin,
handleOAuth2Redirect: handleOAuth2Redirect,
jwt: jwt
};
return authController;
})();
我從字面上使它通過改變控制器功能的某些行工作。但出口區塊一直保持不變。自然,我必須保持編碼,但它停止工作。
使其停止工作的一些例子:
'use strict';
var passport = require('passport');
var jwt = require('jsonwebtoken'); // This makes it fail
var FacebookStrategy = require('passport-facebook').Strategy;
var TwitterStrategy = require('passport-twitter').Strategy;
var InstagramStrategy = require('passport-instagram').Strategy;
var OAuth2Strategy = require('passport-oauth2').Strategy;
就是這樣:添加var jwt = require('jsonwebtoken')
將使其失敗。
有什麼我失蹤了嗎?