首页 文章

注销不能使用PHP“使用facebook登录”

提问于
浏览
-1

我正在尝试使用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

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

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

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

相关问题