跟踪如果用户已经从facebook在一个新的浏览器选项卡注销,当与facebook php sdk工作



我正在使用php sdk的facebook应用程序。我有一个小问题与我的应用程序,用户登录到我的应用程序后,如果用户从一个新的浏览器标签退出facebook,之后,我的应用程序上的任何行动应该重定向回登录页面,说用户已经注销。但在我的情况下,我的应用程序仍在工作,即使他已注销。所以谁能帮助我在这个。

注意:
我没有在我的应用程序页面中使用任何注销URL。我可以通过调用$facebook->destroySession()直接破坏会话,但我不知道如何有条件地做到这一点,因为我不知道用户何时退出facebook(在新浏览器选项卡中打开)

如果我从Facebook注销,而我的应用程序在iframe中运行,在另一个选项卡中,我得到一个模态对话框"Login to Continue"从Facebook服务。(使用chrome)

如果相同的应用程序在另一个选项卡中运行在Facebook之外(没有iframe),并且我从Facebook注销,我的应用程序检测到Facebook会话结束。

这是因为我检查每个页面加载是否有一个有效的Facebook用户;-)

我的猜测是,如果用户登录了,您不会检查每个页面加载.....

(或者你有一个奇怪的浏览器,不共享标签之间的cookie或其他东西)

我也有同样的问题。我找不到一种方法来检测用户是否使用PHP SDK登录。然而,当我结合JS SDK时,它可以检测会话并正确设置cookie。然后使用PHP SDK选择cookie/会话。

如果你用我的溶液,一定要小心。使用JS和PHP SDK的组合,AccessToken似乎失去了它的持久性。我遇到的问题是得到以下错误: oauthexcexception:必须使用一个活动的访问令牌来查询当前用户的信息

阅读后,我发现这是一个但是在SDK的pull 48上得到了修复:https://github.com/facebook/facebook-php-sdk/pull/48

这部分有帮助,但现在我得到这个错误: oauthexcexception:验证访问令牌错误:Session已在unix时间过期

总结:combo SDK似乎可以解决你的问题,但API显然有问题。我正在继续我的研究,当我得到解决方案时,我会发布。

期待听到别人做了什么来解决这个问题

最新更新