不能运行两次facebookFQL:需要在PHP中抛出用户会话


cant run facebook FQL twice: Requires user session thrown in - PHP

我的facebook应用程序突然停止工作,我运行了一次这个FQL,但如果我尝试运行两次,它会返回错误:

Fatal error: Uncaught Exception: Requires user session thrown in

这是我的功能:

function get_top_fb_friends()
{
    require_once 'src/facebook.php';
    require('facebook_api_connect.php');
    $accessToken = $facebook->getAccessToken();
    $params = array('method' => 'fql.query',
            'query' => 'SELECT uid, pic_square, name 
             FROM user 
             WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 
             ORDER BY mutual_friend_count DESC','access_token'=>$accessToken);
    $friend_array = $facebook->api($params);
    return $friend_array;
}

我尝试添加访问令牌,但第二次仍然失败。

这似乎与这里描述的问题相同:

FQL错误102需要用户会话进行重复查询

我不知道如何使它发挥作用!

如果你不实现Facebook登录,你将从收到访问令牌

$accessToken = $facebook->getAccessToken();

很可能是应用程序访问令牌,该令牌对于请求您想要的信息类型无效。此外,您需要user_friends权限,显然您使用的是旧版本的SDK,因为'method' => 'fql.query'已经过时了。

参见

  • https://developers.facebook.com/docs/facebook-login/access-tokens
  • https://developers.facebook.com/docs/apps/review/login#do-你需要复习
  • https://developers.facebook.com/docs/technical-guides/fql/#read