Facebook FQL 查询专辑表不适用于图形 API PHP


 $fql = 'SELECT name,aid,photo_count,owner FROM album WHERE owner='.$userId;
 $fql = 'SELECT aid,owner,name FROM album WHERE owner IN 
          (SELECT uid1 FROM friend WHERE uid1 = 100002278102636 LIMIT 1 )';

我正在使用我的代码点火器应用程序将照片上传到将命名为当前日期的相册。创建相册和所有其他上传工作正常,但是当我尝试使用所有者字段从专辑表中选择专辑名称时,它会返回一个空数组。但上面的查询适用于 facebook 测试查询小部件

https://developers.facebook.com/tools/explorer?fql=SELECT%20aid%2Cowner%2Cname%20FROM%20album%20WHERE%20owner%3D100002278102636

我使用了这样的API

   $ret_obj1 = $this->facebook->api(array(
                                   'method' => 'fql.query',
                                   'query' => $fql,
                                 ));

我做错了什么...提前致谢

我的猜测是这是一个权限问题。若要获取这些结果,需要以用户身份进行身份验证,并在访问令牌中具有user_photosfriends_photos权限。如果您不这样做,FQL 查询将返回一个结果,Facebook 将在将结果提供给您的应用之前将其过滤掉,从而给出一个空数据集。

另一种可能性是您的访问令牌不属于用户100002278102636。如果是这种情况,则friend子查询将失败。

另外,您现在应该使用album_object_id而不是aid。看来aid字段(和pid)将在 11 月删除。

您是否尝试过通过urlencode运行$fql查询?您会注意到Facebook图形浏览器上的那个是编码的,但你的

不是
  $ret_obj1 = $this->facebook->api(array(
                               'method' => 'fql.query',
                               'query' => urlencode($fql),
                             ));

顺便说一句 - 这个查询:

  $fql = 'SELECT aid,owner,name FROM album WHERE owner IN 
      (SELECT uid1 FROM friend WHERE uid1 = 100002278102636 LIMIT 1 )';

您正在选择 uid1 其中 uid1 = 已知值?为什么不干脆做

$fql = 'SELECT aid,owner,name FROM album WHERE owner = 100002278102636 )';

最新更新