我正在尝试使用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();
我应该在哪里更改注销工作
答案 0 :(得分:0)
经过几次试验和错误后,我发现脚本只是这样制作的。登录时,它会将您登录到应用程序和Facebook,但在注销时只会将您从应用程序中注销而不是Facebook。
这意味着Facebook会话仍然存在,如果你想破坏Facebook会话,你需要打开Facebook并记录我们的。
我还发现使用Twitter和Gmail登录也是这样的。它们只会将您从应用程序中注销,而不是分别从站点Twitter和Gmail ...