1

我正在使用 PHP (with js) SDK 在我的网站周围进行身份验证。到目前为止,我从来没有遇到过访问令牌的问题,并且一切都运行顺利。由于已推送最新更新,因此我收到了很多:

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

只要有对 API 的 PHP 调用,访问令牌似乎就会失效(或无法恢复)。我制作了一个简单的页面,它总是按预期简单地返回当前的访问令牌:

//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 和密码作为表单中的字符串[appID]|[secret]

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

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

对问题或解决方案的任何见解都会非常有帮助!谢谢

4

3 回答 3

3

这是一个 Facebook 错误。描述可以在这里找到:https ://developers.facebook.com/bugs/404450666302585

于 2012-12-06T15:00:54.493 回答
2

现在已解决此问题。更新到最新版本的 PHP-SDK (v3.2.2)。

于 2012-12-07T04:35:07.767 回答
0

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

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

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

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] 一个。它对我有用。

于 2013-03-18T14:17:40.780 回答