2010-12-05 86 views
2

我正在編寫一個應用程序,它有多個使用Facebook Connect作爲單一登錄解決方案的前端客戶端。驗證Facebook連接會話

其中一個客戶端,例如在iOS平臺上運行,因此所有的fb身份驗證都通過iOS Facebook SDK在客戶端上進行。但是,當用戶在客戶端進行身份驗證後,由於我正在使用Facebook登錄我們的網站,因此服務器是否有從客戶端獲取身份驗證數據並驗證它?

回答

1

使用JavaScript SDK,調用FB.getSession()以獲取具有各種認證相關位的JS對象。其中,將'access_token','expires','secret','session_key','uid'和'sig'傳遞給您的服務器。

在服務器端,以檢查是否該呼叫是可信的,這些的concat成字符串,如 「=的access_token 1290380d9e &期滿= 92d903 &祕密= e9cj9kd & session_key可以= s49i9i3f & UID = 12345」。所以你剛剛通過的一切,不包括sig。

對於此字符串,請將您可從Facebook developer site獲得的「應用祕密」連接起來。以該字符串的MD5十六進制(在Python import md5; md5.new(foobar).hexdigest())中進行比較,以查看它是否與您傳遞的'sig'相同。