2012-02-08 2 views
0

Facebook Connect 용 JS SDK 및 PHP SDK의 v3를 사용하고 있습니다. 예제 코드 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(); 

(I 인해 길이 다소 그것을 압축). 그것들은 getUser()이 사용자 ID를 얻는 것이 모든 것이 유효하다는 것을 보증하지 않는다는 것을 암시하는 것처럼 보입니다. 그래도 영원히 괜찮은지를 완전히 확인하기 위해서는 Facebook에 다시 연락해야합니다 (이 예에서는 사용자 프로필 정보를 얻는 것입니다). 사실입니까?

필자가 묻는 이유는 필자가 필요로하지 않는 코드 (그리고이 경우 불후의 백엔드 요청)를 잘라 내고 싶은데, 모든 페이지로드시 사용자 전체 프로필이 필요하지 않기 때문에, 사용자가 로그인 한 경우 FB ID 만 있으면됩니다.

답변

1

가정은 맞습니다. $facebook->getUser();을 호출하는 것은 대부분의 경우에 테스트입니다. 세션이 유효한지 항상 확인해야합니다.

+0

나는 두려웠다. 대답을 주셔서 감사합니다 – TheLQ

+1

@ TheLQ - 아무 문제 없습니다. 일부 Ajax 작업을 위해 JavaScript SDK를 사용하여 사용자의 유효성을 검사 할 수도 있습니다.) – Lix

0

fb 사용자 ID 만 필요하면 다음과 같이하면됩니다.

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

이것은 OP가 수행 한 코드 샘플에서 수행 한 작업입니다. – Lix

관련 문제