2012-05-24 1 views
1

Я пытаюсь получить Экспресс-сессия ID on .findOrCreateUser of Everyauth.Как получить Express sessionID на .findOrCreateUser от Everyauth?

Backgroud этого вопроса:

В принципе, я пытаюсь интегрировать Socket.io и Express, и чтение socket.io and Express. Tying it all together,

я мог бы получить Экспресс SESSIONID из сферы Socket.io что очень важно для мой проект.

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

До сих пор так хорошо ... Тогда мне нужно получить Экспресс SESSIONID на .findOrCreateUser из Everyauth.

Хотя я новичок в Everyauth, мне удалось получить facebook/Google/Twitter идентификатор_пользователя и т.д. после everyauth proccess сконфигурированного, как показано ниже, например, 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'); 

узел. 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 (функция (сессия ... не включает Экспресс SESSIONID

Как получить экспресс SESSIONID на .findOrCreateUser из Everyauth, appropirately? Спасибо.


EDIT

после этого поста, я пытаюсь реализовать

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 (функция (Req, идентификатор пользователя, обратный вызов) никогда не был уволен ...

ответ

0

OK,

Я должен был сделать

console.log(session.id); 

но, я думал, что все содержимое объекта появляется, когда я просто делаю console.log (session);

+3

См. [API doc для 'util.inspect'] (http://nodejs.org/api/util.html#util_util_inspect_object_showhidden_depth_colors), который' console.log' использует внутри; по умолчанию он будет отображать только вложенные объекты на глубину до двух. Если вы хотите показать объект и * все * подобъекты, их подобъекты и т. Д., Попробуйте 'console.log (util.inspect (session, false, null))'. – Ashe

+0

Len, очень информативно! большое спасибо! –

Смежные вопросы