Como usar o passaporte com express e socket.io?

No momento, estou tentando configurar um sistema de autenticação básica para meu aplicativo node.js. Por enquanto estou usando express (3.0.0rc5), passaporte (0.1.12) e socket.io (0.9.10) com o Mongoose como Store para dados da sessão. Eu também tenho brincado comeveryauth mas eu não gostava de trabalhar com promessas.

Situação atual:

A autenticação através do passaporte (estratégia do facebook) é bem-sucedida,session.sid cookie é definido no cliente após o redirecionamento e eu posso ver um documento de sessão no meu banco de dados. Eu posso acessar o cookie de sessão emsocket.io atravéssocket.handshake.headers.cookie.

Se eu entendi o conceito de passaporte corretamente, depois deauthentication passport.serializeUser é chamado que me permite adicionar informações à sessão. No meu caso, a informação mais importante é o email, por isso configurei o serializador da seguinte maneira:

passport.serializeUser(function(user, done) {
  done(null, user.email);
});

Agora estou no ponto em que tenho que usar apenas as informações do cookie no meu evento socket.io para extrair o endereço de email da sessão.

var connect = require('connect'),
    parseSignedCookie = connect.utils.parseSignedCookie,
    cookie            = require('express/node_modules/cookie');

io.on('connection', function(socket) {
    if(socket.handshake.headers.cookie) {
        var cookie = cookie.parse(socket.handshake.headers.cookie);
        var sessionID = parseSignedCookie(cookie['connect.sid'], 'secret');
    }
});

passport.deserializeUser(function(id, done) {
    // so, what is supposed to be done here?
});

Então, se não estou enganado, a tarefa agora é usardeserializeUser para acessar o endereço de e-mail correspondente.

Como eu faria isso? Quaisquer ponteiros são muito apreciados.

questionAnswers(3)

yourAnswerToTheQuestion