3

我们已经在一个应用程序上工作了大约 2 个月,一切都很顺利。我们在登录权限中使用 PHP SDK 和离线模式但是自从几天前在 Facebook api 最近发生变化并删除离线模式之后,我们开始面临“未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户。”

主要问题是它确实在我们的应用程序工作一段时间后(大约 10 分钟)发生,但同时当我们通过此链接检查令牌的有效性时, 我们看到令牌仍然有效,另一方面 cookie仍然存在并且它不会过期,但我们收到此错误:“未捕获的 OAuthException:必须使用活动访问令牌来查询有关当前用户的信息”

我已经访问过此链接 并下载了最新版本,但它没有帮助任何人都可以帮助我们,请问哪里可能出错?


感谢您的回复,我认为与 yacon 一样,目前我们正在使用 javascript 处理应用程序的某些部分时,似乎在访问 facebook->api(/me) 时存在错误,这对于同时使用 javascript sdk 和 PhP sdk 来说真的很头疼彼此

4

3 回答 3

2

您可以在 getLoginUrl 之后简单地将 accesstoken 存储到会话变量中来解决这个问题

$facebook->getLoginUrl(...)

然后每当你初始化 facebook

$facebook = 新的 Facebook(数组(
  'appId' => Yii::app()->params['facebook_appId'],
  'secret' => Yii::app()->params['facebook_appSecret'],
));

从会话中获取访问令牌并使用 setAccessToken 设置它

$facebook->setAccessToken(Yii::app()->session['access_token']);

于 2012-12-13T04:59:26.617 回答
1

我以这种方式处理这种情况1.我
获得 1 小时有效期的访问令牌
2.将令牌延长至 60 天有效期
3.将该令牌保存到会话并将其用于所有项目查询。

         try{
               $facebook_uid = $facebook->getUser();
                $facebook->setExtendedAccessToken();
                $accessToken = $facebook->getAccessToken();
                $fbuser = $facebook->api('/me');
                $session['api_me'] = $fbuser;
                $session['tokenValue'] = $accessToken;
        }catch (Exception $e) {
                facebook_uid =null;
        }
于 2012-12-12T06:35:46.933 回答
0

我认为api中有一个错误。当我使用 $facebook->api('/'.$facebook_uid) 而不是 ->api('/me') 时,它可以工作。

于 2012-12-12T17:30:05.427 回答