2010-02-01 82 views
0

我有一個基於網站的遊戲,有登錄帳戶,我想集成到Facebook(不是臉書連接,我想使用iframe畫布頁)。如何製作一個網站作爲一個網站和一個Facebook應用程序?

我的問題是如何驗證用戶,以及如何檢查用戶是來自Facebook還是直接來自網站。

我一直在玩require_login()使用PHP庫。我主要擔心的是,我如何驗證來自Facebook的GET參數確實來自Facebook?如果我可以這樣做,那麼我可以將他們的Facebook會話ID和UID作爲登錄憑證存儲在會話中。

我的另一個擔心是GET變量可能會作爲reffer傳遞給外部鏈接。

終於...我發現在某些瀏覽器中,使用require_login()時,它突破了iframe並進入永恆的狀態,不斷地向URL添加額外的authtoken。

希望有人能幫助

回答

0

是的,你可以創建一個應用程序,獨立工作,以及Facebook的應用程序。對於Facebook,您將不得不使用Facebook的iframe method在Facebook上工作。

+0

我意識到這一點......我已經得到了那麼多,我對事物的認證方面更感興趣,但是謝謝 – Mark 2010-02-01 14:41:25

+0

對不起,我沒有看到鏈接...我會讀一讀 – Mark 2010-02-01 14:44:10

+0

@Mark :沒問題的老兄,謝謝:) – Sarfraz 2010-02-01 14:52:48

0

您可以通過verifying the signature來驗證來自Facebook的請求,其方式與Facebook檢查API請求來自您的應用程序的方式相同。使用PHP客戶端庫,您可以使用Facebook類的validate_fb_params()方法自動執行此操作。

請記住,會話密鑰是暫時的,因此用戶將需要通過您的應用程序與Facebook進行身份驗證,否則密鑰會在一小時內過期。如果您希望將會話密鑰存儲在cookie中,您也可能遇到Safari的第三方cookie問題,並且您還需要針對其他一些瀏覽器/隱私設置組合的小型隱私。類似於:

<?php 
header('P3P: CP="CAO PSA OUR"'); 
?> 

in an include would do it。

是的:會話密鑰可能會傳遞到外部網站,如引用屬性。這只是平臺目前的安全缺陷之一。唯一的解決方法是通過刪除引用鏈接的處理程序重定向所有外部點擊,或者在頁面加載時重定向以剝離fb_sig_ss參數。

+0

這看起來像一個很好的替代第三方cookie問題 http://www.foobots.net/breakouts.html – Mark 2010-02-01 22:04:29

相關問題