gpt4 book ai didi

javascript - Node.js/Express - 如何通过方法(使用套接字)访问 session 数据?

转载 作者:行者123 更新时间:2023-11-28 05:53:31 25 4
gpt4 key购买 nike

我已在 session 中存储了一些 Oauth 数据,现在我想再次访问它,因此我创建了一个本地 API 端点来提供该访问 token 。看起来,如果我通过方法发出该请求,它不包含请求正文,因此它实际上无法获取 req.session.access_token

如果在地址栏中输入,访问此端点会提供正确的数据,但通过方法请求时,响应是未定义的。该方法正在通过套接字调用,如果这有助于通知建议。

//This is the endpoint
app.get('/instagram/accesstoken', function(req,res){
console.log("/instagram/accesstoken: ", req.session.access_token, ", req: ", req);
res.json({access_token: req.session.access_token});
});

//This is the method calling the endpoint
function getAccessToken(callback){
request({url: 'http://localhost:3000/instagram/accesstoken', method: "GET"}, function(err, resp, data){
console.log("getAccessToken: ", data);
if(err) { return callback(err); }
callback(null, data);
});

//Sockets
io.listen(server);
io.on('connection', function(socket){
...
getAccessToken(function(err, token){...}
...
});

我也愿意接受替代解决方案。我怎样才能切实地访问 session 数据?感谢您的耐心等待并浏览。

最佳答案

使用express和socket.io才几天,但这里有一点想法:
1. 您在获取 req.session 时遇到问题,该 session 由服务器从其 session 存储中获取。服务器借助存储在浏览器cookie中的sessionid(通常称为sessionid或sid)来完成此操作,该cookie在每个请求的 header 中发送。因此,您可能应该检查请求 header (在套接字连接后发出的请求上)以查看 cookie 是否正确发送以及它是否包含我们想要的 sessionid
2. 您告诉客户端在套接字连接时在您的网站上请求 accesstoken ,以便服务器可以获得 Oauth access_token 来请求或发送信息到其他应用程序(如果我理解正确的话)。这是一点开销(请求太多),因为您可能只是从 socket request's header 获取 session ID。然后用它获取该用户的 session 数据。然而,这可能需要一些调整,因为框架的 session 功能无法自动检查 req 对象中的 session ID。如果 session 功能不提供相关功能,这可能会有点困难,因此您必须深入研究框架。但如果计划 1 不起作用,它是一种替代方案(而且也更优雅,因为它节省了一个请求:)(但也可能更难:( ))

关于javascript - Node.js/Express - 如何通过方法(使用套接字)访问 session 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37892518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com