注销不在"登录Facebook"使用PHP

时间:2015-06-17 10:56:46

标签: php facebook facebook-graph-api facebook-login

我正在尝试使用PHP SDK 4.0.0在我的网站上使用facebook登录。 登录过程正常,并提取Facebook ID,用户名,姓名和电子邮件。但问题出在退出。

代码将我从应用程序中注销,但facebook会话仍然存在。注销后,如果我在另一个选项卡中打开www.facebook.com,那么Facebook就会打开。即它将我从应用程序中导出,但不是来自Facebook。任何人都可以帮助我......

这是我的index.php文件

<?php
session_start();

if ($_SESSION['FBID']){ ?>

  <img src="https://graph.facebook.com/<?php echo $_SESSION['FBID']; ?>/picture">
  <?php
  echo $_SESSION['USERNAME'];
  echo $_SESSION['FBID'];
  echo $_SESSION['FULLNAME'];
  echo $_SESSION['EMAIL']; ?>
  <div><a href="logout.php">Logout</a></div>
<?php } else {?>
  <h1>Login with Facebook</h1>
  <a href="fbconfig.php">Login with Facebook</a>
<?php } ?>

这是我的fbconfig文件

        <?php
    session_start();

    require_once 'autoload.php';
    use Facebook\FacebookSession;
    use Facebook\FacebookRedirectLoginHelper;
    use Facebook\FacebookRequest;
    use Facebook\FacebookResponse;
    use Facebook\FacebookSDKException;
    use Facebook\FacebookRequestException;
    use Facebook\FacebookAuthorizationException;
    use Facebook\GraphObject;
    use Facebook\Entities\AccessToken;
    use Facebook\HttpClients\FacebookCurlHttpClient;
    use Facebook\HttpClients\FacebookHttpable;

    FacebookSession::setDefaultApplication( 'Your APP ID','Your APP Secret' );

        $helper = new FacebookRedirectLoginHelper('http://example.com/fb/fbconfig.php' );
    try {
      $session = $helper->getSessionFromRedirect();
    } catch( FacebookRequestException $ex ) {

    } catch( Exception $ex ) {

    }


    if ( isset( $session ) ) {

      $request = new FacebookRequest( $session, 'GET', '/me' );
      $response = $request->execute();

      $graphObject = $response->getGraphObject();
            $fbid = $graphObject->getProperty('id');
            $fbfullname = $graphObject->getProperty('name');
            $femail = $graphObject->getProperty('email');

            $_SESSION['FBID'] = $fbid;           
            $_SESSION['FULLNAME'] = $fbfullname;
            $_SESSION['EMAIL'] =  $femail;

      header("Location: index.php");
    } else {
      $loginUrl = $helper->getLoginUrl();
     header("Location: ".$loginUrl);
    }
    ?>

logout.php文件是

    <?php 
    session_start();
    session_unset();
        $_SESSION['FBID'] = NULL;
        $_SESSION['FULLNAME'] = NULL;
        $_SESSION['EMAIL'] =  NULL;
    header("Location: index.php"); 
    ?>

我还尝试在logout.php的末尾添加session_destroy();

我应该在哪里更改注销工作

1 个答案:

答案 0 :(得分:0)

经过几次试验和错误后,我发现脚本只是这样制作的。登录时,它会将您登录到应用程序和Facebook,但在注销时只会将您从应用程序中注销而不是Facebook。

这意味着Facebook会话仍然存在,如果你想破坏Facebook会话,你需要打开Facebook并记录我们的。

我还发现使用Twitter和Gmail登录也是这样的。它们只会将您从应用程序中注销,而不是分别从站点Twitter和Gmail ...