我在我的网站上使用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]
基本上,对Facebook对象的任何调用都会使下一页导航未经身份验证。
此外,我目前还没有将检索到的访问令牌存储为cookie或mySQL。我应该吗?
对问题或解决方案的任何洞察都会非常有用!感谢
答案 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]。 它适合我。