1

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) は起動されませんでした...

4

1 に答える 1

0

わかった、

やるべきだった

console.log(session.id);

しかし、console.log(session); を実行すると、オブジェクトの内容全体が表示されると思いました。

于 2012-05-25T02:22:00.317 に答える