2012-01-31 77 views
1

我是node.js和everyauth的新手。虽然我只是在everyauth周围玩,但我已经意识到everyauth.user在玉石的意见,但我不能得到req.user页面回调工作。无法在路由器功能中获得everyauth的req.user

/** 
* Module dependencies. 
*/ 


var express = require('express') 
    , routes = require('./routes') 
    , everyauth = require('everyauth') 
    , Promise = everyauth.Promise 
    , util  = require('util') 
    , models = require('./models'); 



//Everyauth setup 

everyauth.twitter 
    .consumerKey('XXX') 
    .consumerSecret('XXX') 
    .findOrCreateUser(function(session, accessToken, accessTokenSecret, twitterData){ 
    var promise = new Promise(); 
    models.findOrCreateTwitterUser(twitterData,promise); 
    return promise; 
    }) 
    .redirectPath('/'); 

var app = module.exports = express.createServer(); 
// Configuration 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.static(__dirname + '/public')); 
    app.use(express.cookieParser()); 
    app.use(express.session({secret:"Iam james bond"})); 
    app.use(express.methodOverride()); 
    //app.use(app.router); 
    app.use(everyauth.middleware()); 
}); 

app.configure('development', function(){ 
    everyauth.debug = true; 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 

// Routes 

app.get('/', function(req, res){ 
    if(req.loggedIn){ 
    console.log(req.user); //<--This is always undefined 
    } 
    console.log("index"); 
    res.render('index', { title: 'Welcome to Chat app' }); 
}); 

//Helpers 
everyauth.helpExpress(app); 

app.listen(3000); 
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env); 

这里是有问题的部分

app.get('/', function(req, res){ 
    if(req.loggedIn){ 
    console.log(req.user); //<--This is always undefined 
    } 
    console.log("index"); 
    res.render('index', { title: 'Welcome to Chat app' }); 
}); 

看来我错过了一些点。奇怪的部分是req.loggedIn按预期工作,但某种方式不能填充用户数据。

回答

2

我一直在与最新版本的everyauth req.user问题。我所做的是我使用“req.session ...”。因此,如果我想在facebook oauth下获取用户,我会使用req.session.auth.facebook.user.id,这给了我用户Id。

console.log(req.session)从那里提取你想要使用的任何信息。

3

被你需要配置everyauth.everymodule.findUserById像下面

//Everyauth setup 
.... 
.... 
everyauth.everymodule.findUserById(function (userId, callback) { 
     var db = app.set('db'); 
     var User = db.main.model('User'); 
     User.findById(userId, callback); 
     // callback has the signature, function (err, user) {...} 
    }); 
.... 
.... 
var app = module.exports = express.createServer(); 
//Configuration 
+1

我有这个,仍然没有工作req.user访问“用户”。 – guiomie 2012-06-14 02:10:43