我又来了...我想在获取到Access_token后把它保存在session中;下面这一步是获取到了。
router.route("/fanfou").get(function(req,res){
res.render("fanfou",{title:'fanfou'});
}).post(function(req,res){
var username = req.body.username;
var password= req.body.password;
oa.getXAuthAccessToken(username, password, function (error, oauth_token, oauth_token_secret, results) {
if (error)
console.log(error);
else
{
req.session.oauth_token = oauth_token;
req.session.oauth_token_secret = oauth_token_secret;
var options={
url:'http://api.fanfou.com/statuses/home_timeline.json',
oauth_token:req.session.oauth_token,
oauth_token_secret:req.session.oauth_token_secret
}
oa.get(options,function(error,data){
if(error)
{
res.json({
error:error
});
}
else{
res.json({
result:data,
auth_token:req.session.oauth_token
});
}
});
}
});
});
但是到了这一步又获取不到了。不知道哪里出了问题,还请大神指教
router.route("/fanfouget").get(function(req,res){
res.render("fanfouget",{title:'fanfouget'});
}).post(function(req,res){
console.log('req.session.oauth_token'+req.session.oauth_token)
var options={
url:'http://api.fanfou.com/favorites/id.json',
oauth_token:req.session.oauth_token,
oauth_token_secret:req.session.oauth_token_secret
}
oa.get(options,function(error,data){
if(error)
{
res.json({
error:error
});
console.log(error);
}
else{
res.json({
result:data
});
console.log(data);
}
});
});
而且我在app.js添加这段代码检测req.session ,一直检测不到。
app.use('/',function(req,res){
res.send('检测token');
if(req.session.oauth_token){
console.log('token存在');
}else{
req.session.oauth_token=11112;
console.log(req.session.oauth_token);
}
})
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
req.session 依赖中间件,expresjs 默认没有提供这个对象
如果确认已经加载 session 中间件,可用通过环境变量开启 session 的 debug 日志。
谢谢邀请,不过后端我一直在用 .NET,对 Express 了解有限。
不过既然 express 的 session 需要中间件支持,建议你检查一下 session 的实现方式有没有问题,比如说是内存实现、服务器实现还是数据库实现,各种实现在存取方面是否存在问题。
泻药。
你这个问题描述的太模糊,而且给的信息太少,很难判断。 我只能分析下了。
首先可以明确你的中间件起作用了,要不你拿不到req.session。
然后,我发现,你的第一步,不是取值,是给req.session 添加了一个key值。这个key值应该是存到内存里面的,然后下次访问的时候可以拿到。
你的问题是没有拿到,这个时候,会不会,在两次中间,node重启了,如果重启,内存里面的数据就丢失了,自然是拿不到的。
如果还无法排除,你可以使用 node-inspector 调试一下,看看哪里出问题了。