2012-02-07 153 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饲料它应该工作,而不让我再次做登录选项