加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Facebook API – 用户注销后会话仍然存在

发布时间:2020-12-13 18:02:51 所属栏目:PHP教程 来源:网络整理
导读:我在我的iframe facebook应用程序中使用Facebook php-sdk来获取用户登录状态. 我使用Facebook帐户注销后立即注销链接,会话尚未销毁.我必须在旧会话到期前等待几分钟,然后我的应用程序将再次获得正确的登录状态. 我希望Facebook能够在用户退出时自行杀死会话.
我在我的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!

解决了:

如果用户先前已注销,则调用$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(),会话肯定会被破坏.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读