2011-09-21 106 views
0

在某些时候,Facebook更改了fbml登录按钮的行为,以便在用户已登录时它不会显示您的网站通过FB。

这一切都很好,但我遇到了PHP SDK认为用户未登录的情况,但FBML按钮确实认为用户已登录,因此它不是显示自己。

有关我如何进一步调试的任何想法?这可能是一个边缘情况,但我需要修复它,因为当FB按钮丢失时用户将无法登录。

回答

1

下面是我们对遇到同样问题的人所了解的最新情况。

由于我们将Facebook PHP SDK从早期版本升级到3.1.1,因此问题出现。

通过代码追踪,我们了解到在FB PHP SDK的以前版本中,会话状态存储在名为fbs_的cookie中。新版本的SDK无法从此cookie恢复会话。相反,它依赖于一个名为fbsr_的cookie来存储已签名的请求。

所以,如果fbs_设置一定的方式,在FB:登录按钮认为您已登录,但3.1.1 SDK不认为你已经登录

我们试图手动清零fbs_XXX。通过代码实现cookie,但每次fb:login-button完成时都会恢复该cookie。最后,我们最终使用$ facebook-> getLoginUrl()创建了我们自己的登录按钮,这看起来像是Facebook希望你做的事情的新方式。