所以基本上作为一个简化的例子,我有 2 个文件。一个是 index.php 文件,一个是 logout.php 文件。
我的 index.php 文件包含类似这样的内容(我已经删除了不必要的代码行。假设用户已经验证了我的应用程序):
require_once "class/facebook/config.php";
try{
include_once "facebook.php";
}catch(Exception $e){
error_log($e);
}
// Create our application instance
$facebook = new Facebook(array(
'appId' => APP_ID,
'secret' => APP_SECRET,
'cookie' => true,
'domain' => REDIRECT_URI,
));
// Get User ID
$user = $facebook->getUser();
print_r($user);
因此,如果我登录 facebook 并加载此页面,它基本上会打印用户 facebook id。到目前为止工作良好。
要注销,假设我使用 logout.php,其中包含类似的内容,
require_once "class/facebook/config.php";
try{
include_once "class/facebook/facebook.php";
}catch(Exception $e){
error_log($e);
}
$facebook = new Facebook(array('appId' => APP_ID, 'secret' => APP_SECRET, 'cookie' => true));
$facebook->destroySession();
header('location:'.REDIRECT_URI);
当我加载此页面时,我退出了 facebook 和我的应用程序,并被重定向到我的索引页面。一路顺风顺水!现在,由于 index.php 加载并且我已注销,因此打印了 0。那看起来也不错。
让我们稍微改变一下场景。假设我们登录到 facebook 并加载 index.php。效果很好,返回用户 ID。美好的。现在假设我们打开另一个选项卡,转到 facebook.com。然后我们直接从 facebook.com 注销。
现在,当我们在之前的选项卡中刷新 index.php 时,当用户实际上已经从 facebook 注销时,它仍然显示旧的用户 ID!