gpt4 book ai didi

session - 如何在Everyauth的.findOrCreateUser上获取Express sessionID?

转载 作者:太空宇宙 更新时间:2023-11-04 02:43:14 25 4
gpt4 key购买 nike

我尝试在 Everyauth 的 .findOrCreateUser 上获取Express sessionID

这个问题的背景:

基本上,我尝试集成 Socket.IO 和 Express,并阅读 socket.io and Express. Tying it all together,

我可以从socket.IO范围获取Express sessionID,这对我的项目设计很重要。

io.sockets.on('connection', function (socket) {
console.log('A socket with sessionID ' + socket.handshake.sessionID
+ ' connected!');
});

到目前为止一切顺利...然后,我还需要在 Everyauth 的 .findOrCreateUser 上获取Express sessionID

虽然我是Everyauth的初学者,但在配置如下的everyauth过程后,我成功获取了facebook/google/twitter userID等,例如everyauth.facebook:

everyauth.facebook
.entryPath('/auth-facebook')
.appId(conf.fb.appId)
.appSecret(conf.fb.appSecret)
.findOrCreateUser(function (session, accessToken, accessTokenExtra, fbUserMetadata)
{
console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
console.log(session); // <-- if this session object includes sessionID, everything works for me..
console.log(fbUserMetadata);
return usersByFbId[fbUserMetadata.id] ||
(usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));
})
.redirectPath('/public/authdone.html');

node.js console.log 如下:

2012-05-24T18:59:31+00:00 app[web.1]: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2012-05-24T18:59:31+00:00 app[web.1]: { lastAccess: 1337885971024,
2012-05-24T18:59:31+00:00 app[web.1]: cookie:
2012-05-24T18:59:31+00:00 app[web.1]: { path: '/',
2012-05-24T18:59:31+00:00 app[web.1]: httpOnly: true,
2012-05-24T18:59:31+00:00 app[web.1]: _expires: Thu, 24 May 2012 22:59:30 GMT,
2012-05-24T18:59:31+00:00 app[web.1]: originalMaxAge: 14400000 },
2012-05-24T18:59:31+00:00 app[web.1]: auth:
2012-05-24T18:59:31+00:00 app[web.1]: { twitter:
2012-05-24T18:59:31+00:00 app[web.1]: { token: 'w0HH4lrzMfeqCLOwd4ncHoPndlyHHqMvyXZM5mGhx8',
2012-05-24T18:59:31+00:00 app[web.1]: tokenSecret: 'Pzfooy4UVRZpwXvPMJRDFXUX1LdMN59hZwz4ZkBIOc' },
2012-05-24T18:59:31+00:00 app[web.1]: facebook:
2012-05-24T18:59:31+00:00 app[web.1]: { user: [Object],
2012-05-24T18:59:31+00:00 app[web.1]: accessToken: 'AAACrg6U8ThcBAG4QVDvIM5Qjd2gsjc3jYnHBas7g0w5QcdUJ0cgXXYBBCnmNaz8exdiFLtgXvruoErZCCXX9yitSZB3SIoAB0cKSPguAZDZD' },
2012-05-24T18:59:31+00:00 app[web.1]: loggedIn: true,
2012-05-24T18:59:31+00:00 app[web.1]: userId: 1,
2012-05-24T18:59:31+00:00 app[web.1]: google:
2012-05-24T18:59:31+00:00 app[web.1]: { user: [Object],
2012-05-24T18:59:31+00:00 app[web.1]: accessToken: 'ya29.AHES6ZRq_AFBJNLG92rSuqApI7dmE0fSq12AifJ14nxNNwlJ6OsFo58' } } }

显然,twitter、facebook 和 google 身份验证信息是通过 Express session 适当收集的,但是,

.findOrCreateUser(函数( session ...不包括Express sessionID

如何在 Everyauth 的 .findOrCreateUser 上正确获取 Express sessionID?谢谢。

<小时/>

编辑

在这篇文章之后,我尝试实现

everyauth.facebook
.entryPath('/auth-facebook')
.appId(conf.fb.appId)
.appSecret(conf.fb.appSecret)
.findOrCreateUser(function (session, accessToken, accessTokenExtra, fbUserMetadata)
{
console.log("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
console.log(session);
console.log(fbUserMetadata);
return usersByFbId[fbUserMetadata.id] ||
(usersByFbId[fbUserMetadata.id] = addUser('facebook', fbUserMetadata));
})
.findUserById(function (req, userId, callback)
{
console.log("######################################");
console.log(req.sessionID);
})
.redirectPath('/public/authdone.html');

但是,.findUserById(function(req,userId,callback)从未被解雇...

最佳答案

好的,

我应该这样做

console.log(session.id);

但是,我认为当我执行 console.log(session); 时会出现整个对象内容;

关于session - 如何在Everyauth的.findOrCreateUser上获取Express sessionID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10744785/

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