Facebook连接:无法使用PHP SDK + JS SDK注销

问题描述:

我遇到了关于Facebook Connect插件的严重问题。 我正在尝试使用此功能,以便让我的用户在网站上登录。Facebook连接:无法使用PHP SDK + JS SDK注销

所以我用basicaly用PHP SDK混合JS SDK给出的例子。

我成功地设法让我的用户登录,但我不能让他们退出。我越来越生气,我不明白...这是行不通的......

后来我将使用Facebook会话的会话PHP变量,所以我需要注销破坏了会话和曲奇饼。你可以只帮我

这里是我的代码:

 <? 
//uses the PHP SDK. Download from https://github.com/facebook/php-sdk 
require 'src/facebook.php'; 
$facebook = new Facebook(array(
    'appId' => 'ddddd', 
    'secret' => 'ddddddddddddddd', 
)); 

$userId = $facebook->getUser(); 

?> 
<?php if ($userId) { 
     $userInfo = $facebook->api('/' + $userId); 
     $params = array('next' => 'http://www.nofrenchtouch.com/include/logout.php'); 
     $logout = $facebook->getlogoutURL($params);?> 

     <span class="facebook-in">Bienvenue <?= $userInfo['name']?> - <a href="#" onClick="logoutUser(); return false;" class="facebook-bt"> Se déconnecter</a> 
</span> 
    <?php } else { ?> 
    <div id="fb-root"></div> 
    <a href="#" class="facebook-bt" onClick="loginUser(); return false;">Se connecter avec Facebook</a> 
    <?php } ?> 


<script> 
      window.fbAsyncInit = function() { 
     FB.init({ 
      appId: '<?php echo $facebook->getAppID() ?>', 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 
     FB.Event.subscribe('auth.login', function(response) { 
      window.location.reload(); 
     }); 
     FB.Event.subscribe('auth.logout', function(response) { 
      window.location.reload(); 
     }); 
     }; 
     (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/fr_FR/all.js"; 
     d.getElementsByTagName('head')[0].appendChild(js); 
     }(document)); 

     function loginUser() {  
    FB.login(
     function(response) { 
      getStatus(); //This is a call to a different function... 
     }, 
    {scope:'email,publish_stream, user_birthday, friends_birthday'} 
    ); 

    function logoutUser() {  
    FB.logout(
     function(response) { 
     } 
    ); 
} 
</script> 

非常感谢阅读。

+1

你在哪里销毁php会话? – DMCS 2012-02-14 21:13:27

FB.logout();将注销用户的Facebook。从Facebook注销本质上会结束与您的服务器的会话,但我认为这不是您要实现的目标。尽管如此,我发现下面的代码工作日志记录了脸谱:

<a href="javascript:FB.logout();void(0)">Log Out</a> 

当用户授予应用程序的权限,以他或她的帐户时,JS SDK将自动传递有关用户对服务器会话信息每次加载页面。为了让用户注销,您必须创建您自己的可以随意登录和注销的身份验证系统。它将使用自己的会话哈希以及不同于JS SDK创建的哈希。只能使用Facebook PHP SDK获取有关用户的信息并将其存储在数据库中。这将允许用户注销您的网站(即使Facebook JS SDK实际上仍然连接)。如果需要,我可以提供更多关于用户帐户系统的信息。

+0

非常感谢您的帮助。 :-) – 2012-03-17 11:06:41

+0

不客气。 – wecsam 2012-03-17 19:02:49

当您注销Facebook时,请删除您的会话和用户的Cookie。

function logoutUser() {  
    FB.logout(
     function(response) { 
//Pass control to function in php where you can destroy your session and cookies. 
// windows.location=PHP function 
     } 
    );