真的很对吗?要连接到Facebook,请执行以下操作:
$facebook = new Facebook(array(
'appId' => 'YOUR_APP_ID',
'secret' => 'YOUR_APP_SECRET',
));
然后你可以这样做吗?
$fbSession = $facebook->getSession();
但有时无效,其他时间我成功了。真的很难理解这里发生的事情。
然后又出现了另一个问题,如果我确实有效,有时我会收到此错误:“当我尝试使用fbSession中的access_token时,会话密钥无效或不再有效”。
在旁注 - 我正在使用2个facebook帐户 - 为了开发和测试目的,不确定是否交替使用它们给了我这些毛骨悚然。这是我在FB App集成中发生的事情,即使用IFRAME。
有人可以详细解释一下这里到底发生了什么吗?行为是不可预测的,我很难排除故障并理解问题。
答案 0 :(得分:0)
仅仅因为你做了新的Facebook ...并不意味着你可以调用getSession并期待会话回来。必须设置$ _REQUEST或$ _COOKIE,因为这是getSession用来确定要返回的内容。如果使用会话信息设置任何一个并且它显然无效,您将获得返回的有效会话。
永远不会在getSession中发出网络请求,因此无法保证返回仍然有效的会话。保证返回客户端仍认为有效的会话(如果可用)。您只会在尝试使用它时发现它无效。因此“会话密钥无效”错误。
一个简单的例子是,如果您使用两个浏览器登录帐户,然后注销一个帐户,您实际上已在两个浏览器上注销,但另一个浏览器在您尝试发出请求之前不知道。因此,在后一种浏览器上,将返回看似有效的会话,但在您尝试发出请求时将失败。
另外我相信你使用的是过时版本的php sdk。