Everyauth の .findOrCreateUser でExpress sessionIDを取得しようとしています。
この質問の背景:
基本的には、Socket.IO と Express を統合して、socket.io と Express を読み込もうとしています。すべてを結びつけ、
プロジェクト設計にとって重要な 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 ユーザー ID などを取得することができました。たとえば、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 の認証情報はエクスプレス セッションを通じて適切に収集されますが、
.findOrCreateUser(関数 (セッション... Expressセッション ID は含まれません)
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) は起動されませんでした...