2012-02-08 10 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(); 

(私は多少の長さに起因し、それを固め)について思ったんだけど部分があります。彼らは 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

関連する問題