【问题标题】:Facebook SDK Logout Function IssueFacebook SDK 注销功能问题
【发布时间】:2014-04-13 19:09:29
【问题描述】:

我在我的网站上将 Facebook PHP SDK 与 JS SDK 结合使用。基本上,JS API 将用户登录,然后 PHP 部分获取所有用户的信息以显示在页面上。

logging 部分工作正常:用户单击一个按钮,会弹出对话框 FB 对话框。 logout 函数也适用于 onClick 事件,但它实际上并不能正常工作。它确实成功注销了用户,但是当它重定向回主页时,会引发异常:

“验证访问令牌时出错:会话无效,因为用户已注销”。

刷新页面后,错误消失。这可能是由于注销功能没有正确删除会话吗?

这是我用来注销用户的函数:

function FBLogout(){
   event.preventDefault();
   FB.logout(function(response){
      window.location.href = 'http://www.mydomain.com/';
   });
}

关于如何解决这个问题的任何建议?

【问题讨论】:

    标签: javascript php facebook facebook-javascript-sdk facebook-php-sdk


    【解决方案1】:

    Facebook 必须将此错误作为对 API 调用的响应。

    成功注销用户后,已向失败的 facebook 发送了一个呼叫,并返回了此错误。

    编辑:

    退出 JS-SDK 不会使 PHP SDK 生成的访问令牌失效。

    那就这样吧-

    • FB.logout 的回调中,调用$facebook->destroySession()- 您可以通过使用此调用对页面进行ajax 调用来做到这一点,然后在回调时,用户将从JS 和PHP 中注销

    【讨论】:

    • 我在标题中有一个 try and catch 块。该错误是由我的异常引发的。
    • 没关系。用户已注销,因此将引发异常,但问题是什么 - 对我来说似乎很好
    • 不,不是。在 try/catch 块之前有一个 if 语句检查用户是否登录。一开始就不应该抛出异常。
    • 大声笑,这就是为什么你必须分享你的代码,你一定是在谈论if($user)
    • 是的,对不起,我是新来的。这就是我正在做的检查,是的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2011-10-22
    相关资源
    最近更新 更多