用户已从facebook注销,但该网站仍然可以获取他的数据


user is logged out from facebook, but website still gets his data

我有以下代码:

$fb = new Facebook(array('appid'=>APPID, 'appsecret'=>APPSECRET));
$user = $fb->getUser();
if($user)
{
try {
$me = $fb->api('/me');
}
catch(FacebookApiException $e) {
error_log($e);
enter code here
$user = null;
}
if($user) { blah blah blah

如果用户没有登录,它可以正常工作,如果用户登录,它也可以工作。但只有当他点击$fb->getLogoutUrl()的链接并成功从facebook注销时,我的应用程序才能保存他的数据。我读到,如果用户已注销,尝试$fb->api('/me')应该会引发异常,但事实并非如此。清除$_SESSION表有帮助,但我认为这不是一个合适的解决方案。

有什么想法吗?

我认为这可能是由facebook的扩展访问令牌(我不确定)引起的,它基本上提供了与离线访问相同的访问权限(事实上取代了它:https://developers.facebook.com/roadmap/offline-access-removal/),但持续60天。

所以我觉得没什么好担心的。我不确定你说的是什么意思

清除$_SESSION表有帮助,但我认为这不合适解决方案

由于我不确定你到底在"清除"什么,你可能正在清除accessToken,在这种情况下,是的,这将阻止你访问用户信息,尽管要注意它不会对你的应用程序进行解密。登录和注销与身份验证和注销是完全不同的两件事。如果您不被允许访问,即用户已取消对您的应用程序的身份验证,我的url通常只会引发异常。

我认为在注销后使用destroySession$fb->destroySession())将通过销毁您一侧的cookie并重置用户访问权限来解决大部分问题。