我正在編寫一個Facebook應用,列出用戶的朋友,與用戶提供的關於它們(存儲在Google App Engine數據庫中)的信息進行交叉引用。以下是我的應用程序的運作方式:驗證Facebook用戶服務器端
用戶登錄到Facebook之後,通過Facebook的Javascript SDK進行Graph API調用以獲取他們的朋友列表。同時,使用用戶的Facebook ID將AJAX請求發送到我的Google App Engine請求處理程序,並且處理程序從數據庫中發回有關用戶朋友的信息的JSON對象。這兩個列表然後在用戶的計算機上交叉引用。
這種方法的一個顯而易見的安全缺陷是,任何人都可以使用任意人的Facebook ID向我的處理程序發送請求,而無需以該人身份登錄Facebook,並獲取人員提供的關於他們的所有信息朋友。畢竟,Facebook ID是公開可用的。
爲了確保用戶的身份服務器端,我實現我自己的登錄系統的唯一方法是將用戶的訪問令牌包含在AJAX請求中,因爲訪問令牌證明用戶是登錄到Facebook。請求處理程序然後可以向Facebook Graph API發出一個虛擬請求,以驗證它是否有效。但是,這看起來很不方便,我不知道如何處理訪問令牌在傳輸到App Engine服務器時過期的可能性。我也看過Facebook Python SDK,但我不確定這可能會有什麼幫助。
App Engine服務器如何驗證Facebook用戶是否已登錄我的Facebook應用程序?