【问题标题】:cant run facebook FQL twice: Requires user session thrown in - PHP无法运行 facebook FQL 两次:需要抛出用户会话 - PHP
【发布时间】:2014-10-13 20:21:49
【问题描述】:

我的 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 Error 102 Requires user session on a repeated query

我不知道如何让它工作!

【问题讨论】:

  • 调试访问令牌。我的猜测是这不是用户看到的
  • 如何获取用户会话?它与访问令牌不同吗?我看了这里:stackoverflow.com/questions/3128085/…
  • 访问令牌可以是用户访问令牌、页面访问令牌或应用访问令牌。

标签: php facebook sdk facebook-fql


【解决方案1】:

如果您不实施 Facebook 登录,您将从

收到访问令牌
$accessToken = $facebook->getAccessToken();

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

【讨论】:

  • 我尝试添加 user_friends 但还是不行
  • 什么不起作用?请更具体。您是否检查过您是否只收到应用访问令牌或用户访问令牌?而且,您是否按照建议更改了通话?
  • 我通过添加 user_friends 更改了范围,但得到了相同的结果,脚本在用户登录后第一次运行良好,但如果我再次运行它,我得到错误需要用户会话。我不确定应用访问令牌或用户访问令牌部分如何检查它们之间的区别?
  • 它看起来像是一个应用程序访问令牌而不是用户访问令牌,虽然它第一次是用户访问令牌,第二次是应用程序访问令牌,但我不明白为什么第二次运行 GetAccessToken() 函数返回应用访问令牌而不是用户访问令牌
  • 已修复!我的应用程序正在自行循环
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-04
  • 1970-01-01
  • 1970-01-01
  • 2020-11-15
相关资源
最近更新 更多