2011-10-12 68 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