我在我的iframe facebook应用程序中使用Facebook PHP-sdk来获取用户登录状态.
我使用Facebook帐户注销后立即>注销链接,会话尚未销毁.我必须在旧会话到期前等待几分钟,然后我的应用程序将再次获得正确的登录状态.
我使用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!
解决了:
如果用户先前已注销,则调用$fb-> api(‘/ me’)将破坏会话.
我已将代码更改为:
if ($session) { try { $fbuid = $fb->getUser(); $me = $fb->api('/me'); } catch(FacebookApiException $e){} }
如果API调用不成功,$session将设置为NULL.非常奇怪的行为,我不解释这里发生的一切,但它解决了我的问题,即没有通过getSession()方法更新剩余的会话对象.
我正在使用$fb-> getUser(),我所做的几乎与你的相同.
if ($fb->getUser()) { try { $me = $fb->api('/me'); } catch(FacebookApiException $e){ **$fb->destroySession();** } }
我发现仅使用API来检查FB是否已注销有时是不一致的,但是使用destroySession(),会话肯定会被破坏.