2012-02-08 73 views
0

我正在使用v3的JS SDK和PHP SDK的Facebook連接。當在示例代碼here尋找有,我想知道關於部分(我壓縮它有點由於長度)我是否總是需要執行測試查詢以確保會話有效?

// Get User ID 
$user = $facebook->getUser(); 

// We may or may not have this data based on whether the user is logged in. 
// 
// If we have a $user id here, it means we know the user is logged into 
// Facebook, but we don't know if the access token is valid. An access 
// token is invalid if the user logged out of Facebook. 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 
} 

// Login or logout url will be needed depending on current user state. 
if ($user) 
    $logoutUrl = $facebook->getLogoutUrl(); 
else 
    $loginUrl = $facebook->getLoginUrl(); 

在開始和註銷碼關注我的位置的大評論。他們似乎暗示getUser()不會保證獲取用戶ID意味着一切都是有效的,但您仍然必須再次聯繫Facebook(在本例中它只是獲取用戶個人資料信息)以完全驗證everthing是否正常。這是真的?

我之所以會問,是因爲我想剪出代碼(在這種情況下,不規範的後端請求),我不需要,對於我的傾訴,我不需要每個頁面加載時的用戶全部用戶配置文件,如果用戶登錄,我只需要FB ID。

回答

1

您的假設是正確的。在大多數情況下調用$facebook->getUser();是一個測試。你一定要檢查會話是否有效。

+0

我很害怕那個。謝謝你的回答 – TheLQ 2012-02-08 19:33:07

+1

@TheLQ - 沒問題。您也可以使用JavaScript SDK驗證用戶的某些Ajax操作;) – Lix 2012-02-08 19:34:50

0

如果你只需要fb用戶id,那麼你只能這樣做。

$user_id = $facebook->getUser(); 
if($user_id){ 
//use this user id to proceed 
}else{ 
//user not logged in 
} 
+0

這是OP在他提供的代碼示例中執行的操作。 – Lix 2012-02-08 19:25:23

相關問題