Facebook PHP SDK在12月和12日更新后行为不端

时间:2012-12-06 13:30:30

标签: facebook facebook-javascript-sdk oauth-2.0 facebook-php-sdk

我在我的网站上使用PHP(带js)SDK进行身份验证。 到目前为止,我从未遇到过访问令牌的问题,而且一切运行顺利。 由于推出了最新的更新,我收到了很多:

  

致命错误:未捕获OAuthException:必须使用活动访问令牌来查询有关当前用户的信息。在1106行的/home/content/54/9505854/html/src/fb/base_facebook.php中引用

每当有PHP调用API时,访问令牌似乎都会失效(或无法恢复)。我创建了一个使用的简单页面,它总是按预期返回当前访问令牌:

//Facebook PHP SDK
require_once 'src/fb/facebook.php'; 

//Config
$facebook = new Facebook(array(
  'appId'  => '...id...',
  'secret' => '...secret...',
));

$accessToken = $facebook->getAccessToken();
die($accessToken); 

如果在javascript身份验证后立即加载此页面仍然有效,但是远离此页面的任何导航(或实际上是刷新)此脚本将以[appID]|[secret]

形式返回appID和secret作为字符串

基本上,对Facebook对象的任何调用都会使下一页导航未经身份验证。

此外,我目前还没有将检索到的访问令牌存储为cookie或mySQL。我应该吗?

对问题或解决方案的任何洞察都会非常有用!感谢

3 个答案:

答案 0 :(得分:3)

这是Facebook的错误。可在此处找到说明:https://developers.facebook.com/bugs/404450666302585

答案 1 :(得分:2)

现在已经修复了。更新到最新版本的PHP-SDK(v3.2.2)。

答案 2 :(得分:0)

我正在使用php-sdk“3.2.0”得到同样的错误..

根据上面提到的新PHD-sdk https://github.com/facebook/facebook-php-sdk/commit/ca9472b3312dab3fdcfbffb4e45eb091f582dcb7

我添加了以下code-snippet,它从缓存中获取已保存的访问令牌,而不是使用相同的代码调用新的访问令牌。

if ($code && $code == $this->getPersistentData('code')) {
          // short-circuit if the code we have is the same as the one presented
          return $this->getPersistentData('access_token');
} 

现在,它返回缓存访问令牌而不是[appID] | [secret]。 它适合我。