2010-07-24 15 views
1

我正在閱讀facebook api,並且遇到了一些困惑,並希望您可以提供幫助。我特別使用Javascript SDK,並從登錄回調中獲取request.session,我想知道字段'sig'是否與'auth_token'相同?我知道兩者的描述是不同的,但我想知道它們在現實中是否相同。如果有人知道,我會非常感激。提前致謝。在facebook api中'auth_token'和'sig'是同一件事嗎?

回答

2

auth_token是一個令牌,Facebook的生成,你必須在登錄時再次立即發送回Facebook的桌面應用程序。

sig,另一方面是與應用程序的私有密鑰組合的所有會話數據的MD5哈希。您可以從會話數據中重建sig並將其與傳入的sig進行比較,如果匹配,則響應可以被認爲是可信的。

考慮存儲在cookie中的下列鍵:

a=1 
b=2 
sig=8a80b0b971da5be75e7197576331b24e 

假定應用程序的私有密鑰"hello"。我們可以嘗試將sig重構爲:

md5("a=1" + "b=1" + "hello"); // 8a80b0b971da5be75e7197576331b24e 

它等於在這種情況下sig的值。我們通過按鍵按字母順序連接所有鍵=值對(「a」在「b」之前),然後連接私鑰並最終獲得生成的字符串的md5來構造這一點。

我寫了一個blog post用於驗證由Facebook在Rails中設置的cookie(PHP示例已在Facebook的網站上提供)。

+0

謝謝,我在那裏懶了一會兒。 = P – bernardw 2010-07-26 08:33:29