2012-02-07 78 views
0

我有以下代碼(我facebook.php正確地加了進來,appIdappSecret也是正確的):Facebook的註銷與PHP和JS SDK

<?php 

define('APP_ID', 'XXX'); 

$facebook = new Facebook(array(
    'appId' => APP_ID, 
    'secret' => 'XXX', 
)); 

$userId = $facebook->getUser(); 

?> 

<html> 
    <body> 
<div id="fb-root"></div> 

<?php if ($userId) { 
    $userInfo = $facebook->api('/' + $userId); ?> 
    Welcome <?= $userInfo['email'] ?> <fb:logout-button></fb:logout-button> 

<?php } else { ?> 
<div id="fb-root"></div> 
<fb:login-button></fb:login-button> 
<?php } ?> 
<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
     appId  : '<?= APP_ID ?>', 
     status  : true, 
     cookie  : true, 
     xfbml  : true, 
     oauth  : true, 
    }); 

FB.logout(function() 
{ 
    top.location.href = 'http://www.google.com' 
}); 

    }; 

    (function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 
</script> 

我的代碼總是輸出WELCOM [email protected]。如何正確註銷以便我可以測試它以再次登錄?

回答

1

刪除Cookie,會話等,然後與Facebook的API做這樣的事情:

 $logoutUrl = $facebook->getLogoutUrl(array('next' => $_SERVER['HTTP_REFERER'], 'session_key' => $fb_session['session_key'])); 

     $fb_session = $facebook->setSession(null); 

     header('Location:' . $logoutUrl); 

如果你想在用戶返回到一個特定的頁面只是改變了「下一個」值到任何網頁你想讓他們回去。

+0

@chris:這對你有幫助嗎?我問,因爲沒有評論。 – 2012-02-08 06:57:28

0
$fb_session = $facebook->setSession(null); 

@Somnath Muluk,看來這個代碼將清除該會話,所以不只是FB應用程序將退出,Facebook網站也loginstatus將是明顯的。

但我認爲app-logout-option會讓應用程序註銷fb。當我繼續訪問我的FB飼料它應該工作,而不讓我再次做登錄選項