2011-10-12 70 views
1

我在我的node.js应用程序中使用express/socket.io组合。到目前为止,它工作正常。 现在,我需要将facebook用户标识和电子邮件标识(用户被授权后)存储到会话范围中。我看到有很多选项,有点在这里丢失..在我的应用程序中,大多数通信通过socket.io发生..最终我想要的是在客户端随时访问用户ID和电子邮件ID ...node.js带facebook的Express/socket.io混合应用程序

var express = require("express"), 
    fs = require("fs"), 
    app = express.createServer(
     form({ keepExtensions: true }) 
    ), 
    io = require("socket.io"); 

socket = io.listen(app); 

回答

1

经过授权,我建议使用已经存在于cookies中的accessToken,然后通过socket.io发送它,并使用graph.facebook或您自己的数据库获取电子邮件和id。存储用户ID和Email的问题在于它可能不安全,因为会话劫持可能发生。

Facebook有自己的安全专家,以确保它不会被劫持。用它!

+0

这正是我正在做的事情roblem是如何将它存储在会话范围内的。可能Cris-O的信息会有帮助。感谢您的最新评论,“Facebook拥有自己的安全专家,以确保它不会被劫持,请使用它!” – user644745

+1

实际上,如果您使用Facebook的JavaScript SKD,accessToken将已经存储在cookie中。所以不用担心这一点。 你也可以使用[everyauth模块](https://github.com/bnoguchi/everyauth)来处理所有的认证。您甚至可以将其与其他系统一起使用,例如高音扬声器,谷歌或雅虎。这是相当成熟的。 –

+0

谢谢。目前我的问题是通过使用简单的cookie来解决的。如果需要将来会使用everyauth。 – user644745

1

这可能帮助:

// Get data from facebok and store it on a var `userData` 

// server 
socket.on('getUserData', function (callback) { 
    callback(facebookUserData); 
}); 



// client 
socekt.emit('getUserData', function(userData) { 
    console.log(userData);  
}); 

http://criso.github.com/fbgraph/

被授权可以在会话中通过快递

http://expressjs.com/guide.html#session-support

将数据存储在一个非常基本的水平后,

+0

我见过http://criso.github.com/fbgraph。它与facebook-js有什么不同?目前我正在使用它,并能够阅读和张贴使用图形API ..但我发现YQL甚至比这些更好。你不必了解脸书/推特/等内部工作..无论如何,我的问题很简单。如何将用户标识存储在会话范围内?大多数情况下,我使用socket.io ...在“http://socket.io/#how-to-use”中,他们给出了一个例子,但不知道如何使用它。主要是我希望能够在需要时从客户端访问userId。 – user644745

+0

我已经添加到上面的答案,因为这里的代码看起来像垃圾 –

+0

美丽。非常感谢。如果我已经正确地理解了这一点,1.从客户端发送“getUserData”,在服务器端收到“getUserData”后,执行一个回调facebook用户数据,最终执行“function(userData)”...以及尝试这明天会更新我的观察。 – user644745

相关问题