0

なんらかの理由で、これは常に有効な ID と Facebook 情報を返します。ログアウトするには、Facebook.Logout を使用して、「fbsr_」を含むすべての Cookie をクリアするページにリダイレクトします。Facebook から手動でログアウトしても、有効な ID が返されます。これは Facebook Connect アプリケーション用です。ここに私のアプリコードがあります、

$uid = $facebook->getUser();

if ($uid) {
  try {
    $me = $facebook->api('/'+$uid);
  } catch (FacebookApiException $e) {
      echo $e;
    error_log($e);
    $uid = NULL;
  }
}

次に、私のPHPログアウトコード、

$app_id="XXXX";
session_name('QEW');
session_start();
session_regenerate_id(true);
session_unset();
session_destroy();
$facebook->destroySession();
if (isset($_COOKIE['fbsr_' . $app_id])) 
{
      setcookie('fbsr_' . $app_id, $_COOKIE['fbsr_' . $app_id], time() - 3600, "/");
      setcookie('PHPSESSID', $_COOKIE['PHPSESSID'], time() - 3600, "/");

      unset($_COOKIE['fbsr_' . $app_id]);   
      unset($_COOKIE['PHPSESSID']);
}

私のJavascriptコードを編集し、

window.fbAsyncInit = function() {
    FB.init({ 
        appId:'XXX', cookie:true, 
        status:true, xfbml:true, oauth:true,
        channelURL:'~~.com/channel.html'
        });
};
(function() {
            var e = document.createElement('script'); e.async = true;
            e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
            e.async = true;
            document.getElementById('fb-root').appendChild(e);
          }());
function login(io)
{
    FB.getLoginStatus(function(response)
    {
        if(response.status == 'connected')
        {
            if(io==1)
            {
                FB.login(function(response) 
                {
                  if (response.authResponse) 
                  {
                     cU(response.authResponse.userID);
                  }
                },{scope:'email'});
            }
            else
            {
                FB.logout(function(response){});
                window.location="./logout.php";
            }
        }
        else
        {
            FB.login(function(response) 
            {
              if (response.authResponse) 
              {
                 cU(response.authResponse.userID);
              }
            },{scope:'email'});
        }
    });
}

次に、「ログアウト」した後、コードの最初のブロックを再度呼び出す別のページに移動すると、有効なユーザー ID が返されるため、Cookie が再作成されます。どうすればこれを修正できますか? ありがとう

4

1 に答える 1

1

phpでCookieを削除します。その後、次のリクエストで JS API が復元します。

Facebook からログアウトする唯一の有効な方法は、ユーザーをログアウト URL にリダイレクトすることです。

echo $facebook->getLogoutUrl();

またはクライアント JS API FB.logout();からも同じです。

于 2012-01-05T05:17:01.937 に答える