0
 $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 )';

我正在使用我的 codeigniter 应用程序将照片上传到一个名为当前日期的相册。创建相册和所有其他上传工作正常,但是当我尝试使用所有者字段从相册表中选择相册名称时,它返回一个空数组。但是上面的查询适用于 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,
                                 ));

我在做什么错...提前谢谢

4

2 回答 2

0

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

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

此外,您应该使用album_object_idnow 而不是aid. 看来该aid字段 (and pid) 将在 11 月被删除。

于 2012-08-16T11:29:32.863 回答
0

您是否尝试过通过 urlencode 运行 $fql 查询?你会注意到 facebooks graph explorer 上的那个是编码的,但你的不是

  $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 WHERE uid1 = a known value?为什么不只是做

$fql = 'SELECT aid,owner,name FROM album WHERE owner = 100002278102636 )';
于 2012-08-16T12:01:50.143 回答