2012-01-31 72 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