我正在使用php sdk在facebook应用上工作。在用户登录我的应用程序后,如果用户从新的浏览器选项卡退出Facebook,我的应用程序有一个小问题,之后我的应用程序上的任何操作都应该重定向回登录页面,说用户已经注销。但在我的情况下,我的应用仍在工作,即使他已经退出。所以任何人都可以帮助我。
注意:
我在我的应用页面中没有使用任何退出网址。我可以通过拨打$facebook->destroySession()
来直接破坏会话,但我不知道我是如何做条件的,因为我无法知道用户何时退出Facebook(在新的浏览器标签中打开) )
答案 0 :(得分:0)
如果我从Facebook注销,而我的应用程序在iframe中运行,则在另一个选项卡中,我会从Facebook获得一个模式对话框“Login to Continue”。 (使用铬)
如果同一个应用程序在另一个选项卡中的Facebook(无iframe)外运行,并且我从Facebook注销,我的应用程序检测到Facebook会话已结束。
那是因为如果有有效的Facebook用户,我会检查每个页面加载; - )
我的猜测是,如果用户已登录,则不会检查每个页面加载.....
(或者你有一个有趣的浏览器,它不会在标签之间共享cookie或其他东西)
答案 1 :(得分:0)
我有完全相同的问题。我找不到一种方法来检测用户是否使用PHP SDK登录。但是,当我组合JS SDK时,它可以检测会话并正确设置cookie。然后我使用PHP SDK选择cookie / session。
如果您使用我的解决方案,请小心。使用组合的JS和PHP SDK,AccessToken似乎失去了它的持久性。我遇到的问题是收到以下错误: OAuthException:必须使用有效的访问令牌来查询有关当前用户的信息。
阅读之后,我发现这是一个但是在SDK的第48版中得到修复: https://github.com/facebook/facebook-php-sdk/pull/48
这部分有帮助,但现在我收到了这个错误: OAuthException:验证访问令牌时出错:会话已在unix时间到期
总结:combo SDK似乎可以解决您的问题,但API显然会出现问题。我正在继续我的研究,并会在我得到决议时发布。
期待听到其他人为解决此事而采取的措施