从Facebook页面获取最近的评论以及相关的用户数据

时间:2013-01-09 04:15:05

标签: php facebook-graph-api fql.multiquery

正如主题所说,我试图从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,一如既往。

1 个答案:

答案 0 :(得分: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)