【问题标题】:Facebook-connect : Can't logout using PHP SDK + JS SDKFacebook-connect:无法使用 PHP SDK + JS SDK 注销
【发布时间】:2012-03-06 05:48:15
【问题描述】:

我遇到了有关 Facebook Connect 插件的严重问题。 我正在尝试使用此功能让我的用户登录网站。

所以我基本上使用了php SDK混合JS SDK给出的示例。

我成功地允许我的用户登录,但我无法让他们注销。我快疯了,我不明白……这根本行不通……

稍后我将在会话 php 变量中使用 facebook 会话,因此我需要注销会话和 cookie。你能帮帮我吗

这是我的代码:

     <?
//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>

非常感谢您的阅读。

【问题讨论】:

  • 你在哪里销毁 php 会话?

标签: javascript php facebook session sdk


【解决方案1】:

FB.logout(); 将使用户退出 Facebook。从本质上讲,退出 Facebook 确实会结束与您的服务器的会话,但我认为这不是您想要实现的目标。尽管如此,我发现以下代码适用于注销 Facebook:

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

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

【讨论】:

  • 非常感谢您的帮助。 :-)
【解决方案2】:

当您退出 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
        }
    );   

【讨论】:

    【解决方案3】:

    你应该像这样使用注销;

    FB.logout(function(response) {
      FB.Auth.setAuthResponse(null, 'unknown');
      ...
    });
    

    正如这里所说..Facebook JS SDK FB.logout() doesn't terminate user session

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 2011-05-31
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多