1

正如主题所说,我正在尝试从 Facebook 页面获取最新评论以及相关的用户数据。我正在使用 Open Graph 和 PHP SDK。

这适用于帖子:

$fql_query = "
    SELECT fromid, id, post_id, time, text  
    FROM comment  
    WHERE post_id IN (SELECT post_id FROM stream WHERE source_id = '" . $fb_id . "') 
    ORDER BY time DESC LIMIT 1000";

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

这是获取我需要的用户详细信息的方法:

$fql_query = "
    SELECT pic_square, name  
    FROM user 
    WHERE uid = '" . $user_id . "'
    ";

而且,根据我能找到的一切,这应该使用 fql.multiquery 将两者结合起来:

$fql_queries = "{
    \"query1\" : \"
    SELECT fromid, id, post_id, time, text 
    FROM comment 
    WHERE post_id IN (SELECT post_id FROM stream WHERE source_id = '" . $fb_id . "') 
    ORDER BY time DESC LIMIT 1000
    \", 
    \"query2\" : \"SELECT pic_square, name FROM user WHERE uid IN (SELECT fromid FROM #query1)\"
    }";

$feed = $facebook->api(array(
    'method' => 'fql.multiquery',
    'queries' => $fql_queries
    ));

但它只返回一个空数组。有谁知道我哪里出错了或者有更好的方法来做我需要的事情?TIA,一如既往。

4

1 回答 1

2

我在我的一个页面上的 Graph API 资源管理器中对此进行了测试,它运行良好。

此多查询是否适用于您在 Graph API 资源管理器中的页面?如果是,那么这是一个权限问题。

也许您的问题在于您对 json 进行硬编码的方式。我在我的网站上使用这样的语法。(它也更具可读性):

$fql_queries = array(
   'query1' => "SELECT fromid, id, post_id, time, text...",
   'query2' => "SELECT pic_square, name FROM user..."
);

...
    'queries' => json_encode($fql_queries)
于 2013-01-09T04:36:14.880 回答