2010-04-21 98 views
1

嘿,我正在爲Facebook寫一個畫布應用程序。我用命令:如何在php中獲取用戶的facebook用戶名?

$user_id = $facebook->require_login(); 

以獲取用戶標識,但在我的應用程序的前幾頁,我不希望要求登錄,但如果用戶的登錄,我想知道是什麼用戶ID是。基本上我需要一個get_login()命令,可能返回0或null,如果用戶沒有登錄。是否有類似的東西?

回答

2

如果您正在編寫FBML應用程序,那麼在您的應用程序的每個頁面上,Facebook將在頁面請求的查詢字符串中傳遞一堆數據。這些參數都以fb_sig爲前綴,併爲用戶組成驗證信息。根本不需要查詢API。

當您使用類似$facebook = new Facebook('api key','secret key');的標準PHP客戶端庫實例化$facebook對象時,Facebook代碼將自動驗證所有這些參數並將結果存儲爲Facebook對象的一部分。

其結果是,你可以簡單地做以下判斷用戶是否登錄:

$facebook = new Facebook('api key','secret key'); 
$fbId = $facebook->get_loggedin_user(); 

如果收到所有適當的參數,那麼你會得到用戶的Facebook ID。否則我相信你會得到null

請注意,如果您正在製作iframe應用程序,還有其他事項需要考慮,因爲Facebook Connect將設置當用戶註銷Facebook時可能不一定過期的Cookie。簽名總是有效的,所以如果你從get_loggedin_user()得到一個ID,你可以確定它是正確的ID。

+0

好的。我認爲是這樣,但它不起作用。經過進一步調查後,由於我對$ _POST數組進行了清理,所以出現這種情況並不正常。謝謝! – Eric 2010-04-21 20:19:57