我在我的iframe facebook应用程序中使用Facebook php-sdk来获取用户登录状态.在我使用Facebook帐户>注销链接注销后,会话尚未销毁.我必须在旧会话到期前等待几分钟,然后我的应用程序将再次获得正确的登录状态.
我希望Facebook能够在用户退出时自行杀死会话.如何手动终止会话?
这是我的代码:
$initParams = array(
'appId' => $conf['app_id'],
'secret' => $conf['secret_api_key'],
'cookie' => TRUE,
);
$fb = new Facebook($initParams);
$fb->getSession(); // will return a session object eventhough user signed out!
Run Code Online (Sandbox Code Playgroud)
解决了:
$fb->api('/me')
如果用户先前已注销,则调用将销毁会话.我已将代码更改为:
if ($session)
{
try
{
$fbuid = $fb->getUser();
$me = $fb->api('/me');
}
catch(FacebookApiException $e){}
}
Run Code Online (Sandbox Code Playgroud)
如果API调用不成功,$session
将设置为NULL.非常奇怪的行为,我不解释这里发生的一切,但它解决了我的问题,即没有通过getSession()
方法更新剩余的会话对象.