2012-02-02 11 views
1

Facebookと統合された簡単な概念実証ウェブアプリケーションを作成しています。基本的な機能は、ユーザーに関する基本的な情報と、友人の友人や友人のプロフィール写真を表示する必要があることです。 Facebook PHP-SDKを介して生成されたウェブアプリケーションのログアウトリンクをクリックすると、ページは単に更新されて表示されます。ユーザーは明らかにまだ私のWebアプリケーションにログインしています。彼らは、しかし、適切なFacebookのログアウトされます。なぜ私はこの動作を見ているすべてのアイデア?次のように私のコードは次のとおりです。FacebookのPHP-SDKを使用すると、ユーザーがFacebookからログアウトしたかどうかをどのように判断できますか?

<?php 

require 'sdk/facebook.php'; 

$facebook = new Facebook(
    array(
     'appId' => 'xxx' //actual app ID and secret go here, 
     'secret' => 'xxx' 
    ) 
); 

## 
## Instantiate user object if a logged in user exists 
if ($user = $facebook->getUser()) { 
    try { 
     $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
     $user = NULL; 
    } 
} 

## 
## Set login/logout url 
$url = $user ? $facebook->getLogoutUrl() : $facebook->getLoginUrl(); 

## 
## Instantiate friend object data 
if ($user) { 
    try { 
     $friend_api_data = $facebook->api('/me/friends'); 
     $friends = $friend_api_data['data']; 
     // Shuffle friends 
     shuffle($friends); 
     $shuffled_friends = array(); 
     for ($i = 0; $i < count($friends) && $i < 6; $i++) { 
      $shuffled_friends[] = $friends[$i]; 
     } 
    } catch (FacebookApiException $e) { 

    } 

} 

?> 
<!doctype html> 
<html> 
<head> 
    <title>Test</title> 
    <link href="css/bootstrap.css" rel="stylesheet" type="text/css" /> 
</head> 
<body> 
    <div class="container"> 
     <h1>Facebook Integration</h1> 

     <!-- Login/Logout URL --> 
     <a href="<?= $url ?>"><?= $user ? 'Logout' : 'Login' ?></a> 

     <!-- Current User Data --> 
     <?php if ($user): ?> 
      <h2>Hi, <?= $user_profile['name'] ?></h2> 
      <img src="https://graph.facebook.com/<?= $user ?>/picture" /> 

      <pre> 
       <?= print_r($user_profile, TRUE) ?> 
      </pre> 
     <?php endif; ?> 

     <!-- Friend Data --> 
     <?php if($shuffled_friends): ?> 
      <h2>Your Friends</h2> 
      <ul> 
       <?php foreach($shuffled_friends as $f): ?> 
        <li> 
         <a href="http://www.facebook.com/<?= $f['id'] ?>"> 
          <img src="https://graph.facebook.com/<?= $f['id'] ?>/picture" /> 
          <?= $f['name'] ?> 
         </a> 
        </li> 
       <?php endforeach; ?> 
      </ul> 
     <?php endif; ?> 
    </div> 
</body> 
</html> 

答えて

0

あなたはPHP SDKのバージョン3を使用している場合、あなたはまた、セッション中にユーザーデータを保存してdestroySession関数を呼び出す必要があります。

+0

これは機能しますが、ユーザーがログインできなくなります。; – rybosome

+0

ログアウトURLを別のスクリプトにポイントします。次に、destroySession関数を実行した後、getLogoutUrlにリダイレクトするlogout.php。 – fire

関連する問題