我似乎无法为
设置任何内容req.session
我正在尝试将oauth令牌和秘密存储到会话中,以便我可以在授权回调后检查它们。这是我的代码
var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
oauth = require('oauth'),
tumblr = require('tumblr.js'),
client = {
consumer_key: '1n9fMPxCBFBbcIGRImYKSK5wwDL6yux64S4DxEwiwzHTNuaIoD',
consumer_secret: 'bW9YKbnwgxexyVx1AaxQr1QoemEkjd29p5U1WpbZ8r1XEH41C0'
},
consumer = new oauth.OAuth(
"http://www.tumblr.com/oauth/request_token", "http://www.tumblr.com/oauth/access_token",
client.consumer_key, client.consumer_secret, "1.0A", "http://127.0.0.1:8080/sessions/callback", "HMAC-SHA1");
server.listen(1337);
app.configure('dev', function(){
app.use(express.logger());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "topsecret" }));
});
app.get('/home', function(req, res){
consumer.getOAuthRequestToken(function(err, oauth_token, oauth_token_secret, results){
if(err){
console.log(err);
}else{
//req.session.oauth.token = oauth_token;
console.log('oauth.token: ' + oauth_token);
//req.session.oauth.token_secret = oauth_token_secret;
console.log('oauth.token_secret: ' + oauth_token_secret);
res.redirect('http://www.tumblr.com/oauth/authorize?oauth_token='+oauth_token);
}
});
});
app.get('/oauth/testapp', function(req, res){
res.send('callback');
});
当我取消注释时
req.session.oauth.token = oauth_token;
我收到错误“无法读取未定义的属性'oauth'”req.session在控制台中显示未定义。
答案 0 :(得分:2)
您正尝试在会话中的对象token
上设置属性oauth
。如果oauth
对象未初始化,则为undefined
,您无法设置token
属性。首先需要在会话中初始化oauth
对象。你可以做一下
req.session.oauth = {token: theToken}
这将在会话中创建一个对象,并设置该对象的token
属性。
@robertklep找到解决方案的另一半:确保您使用正确的环境运行。由于您在dev
中使用了app.configure
,因此必须使用NODE_ENV=dev
运行节点才能应用配置。
答案 1 :(得分:2)
var app = express();
app.configure('dev', function() {
app.use(express.logger());
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({ secret: "topsecret" }));
app.use(app.router); // You need to add the router after the express.session
});
希望这可以帮到你