使用express在node.js中登录facebook的中间件错误

时间:2015-01-07 16:07:03

标签: node.js facebook express passport-facebook

我收到中间件错误。我是node.js和express的新手(这是我的第一个大项目)。我搜索过SO和google已经很长很好了。错误应该在我的app.js中。我已经尝试了很多订单,但我无法找到我确实做错的事情,特别是为什么? 我为Oauth使用护照

我希望你们理解我的问题,英语不是我的第一语言。

错误:

    if (!this._passport) { throw new Error('passport.initialize() middleware n
                                 ^
Error: passport.initialize() middleware not in use
    at IncomingMessage.req.login.req.logIn 

代码,我的app.js:

    var express = require('express');
var path = require('path');
var favicon = require('static-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
// var jsdom = require("jsdom"); 
// $ = require("jquery")(jsdom.jsdom().parentWindow()); 

var dbConfig = require('./db');
var mongoose = require('mongoose');
var app = express();
var User = require('./models/user');
//////
var http = require('http').Server(app);
var io = require('socket.io')(http);
var fs = require('fs');
var data = require('./countries.json');


// Configuring Passport
var passport = require('passport')
  , FacebookStrategy = require('passport-facebook').Strategy;

http.listen(3000);

// Connect to DB
mongoose.connect(dbConfig.url);

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

app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

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


app.get('/auth/facebook/callback', passport.authenticate('facebook', {failureRedirect: '/'}), function(req, res) {
    console.log('Facebook');
    res.redirect('/home');
});

var expressSession = require('express-session');
// TODO - Why Do we need this key ?
app.use(expressSession({secret: 'mySecretKey'}));
app.use(passport.initialize());
app.use(passport.session());

 // Using the flash middleware provided by connect-flash to store messages in session
 // and displaying in templates
var flash = require('connect-flash');
app.use(flash());

// Initialize Passport
var initPassport = require('./passport/init');
initPassport(passport);

var routes = require('./routes/index')(passport);
app.use('/', routes);

passport.use(new FacebookStrategy({
    clientID: "xx",
    clientSecret: "xxx",
    callbackURL: "http:localhost:3000/auth/facebook/callback"
    //redirect_uri: "/home"
  },
  function(accessToken, refreshToken, profile, done) {        
   User.findOne({ 'username' :  msg[1] }, function(err, user) {
    //save fb user to db
  }
));
module.exports = app;

0 个答案:

没有答案