不理解facebook连接丢失其会话和PHP中的其他奇怪的会话问题

时间:2011-06-22 20:35:57

标签: php facebook

真的很对吗?要连接到Facebook,请执行以下操作:

$facebook = new Facebook(array(
      'appId'  => 'YOUR_APP_ID',
      'secret' => 'YOUR_APP_SECRET',
));

然后你可以这样做吗?

$fbSession = $facebook->getSession();

有时无效,其他时间我成功了。真的很难理解这里发生的事情。

然后又出现了另一个问题,如果我确实有效,有时我会收到此错误:“当我尝试使用fbSession中的access_token时,会话密钥无效或不再有效”。

在旁注 - 我正在使用2个facebook帐户 - 为了开发和测试目的,不确定是否交替使用它们给了我这些毛骨悚然。这是我在FB App集成中发生的事情,即使用IFRAME。

有人可以详细解释一下这里到底发生了什么吗?行为是不可预测的,我很难排除故障并理解问题。

1 个答案:

答案 0 :(得分:0)

仅仅因为你做了新的Facebook ...并不意味着你可以调用getSession并期待会话回来。必须设置$ _REQUEST或$ _COOKIE,因为这是getSession用来确定要返回的内容。如果使用会话信息设置任何一个并且它显然无效,您将获得返回的有效会话。

永远不会在getSession中发出网络请求,因此无法保证返回仍然有效的会话。保证返回客户端仍认为有效的会话(如果可用)。您只会在尝试使用它时发现它无效。因此“会话密钥无效”错误。

一个简单的例子是,如果您使用两个浏览器登录帐户,然后注销一个帐户,您实际上已在两个浏览器上注销,但另一个浏览器在您尝试发出请求之前不知道。因此,在后一种浏览器上,将返回看似有效的会话,但在您尝试发出请求时将失败。

另外我相信你使用的是过时版本的php sdk。