通过Graph API获取Facebook评论,但不会从社交插件Facebook评论框中隐藏评论

时间:2011-09-06 12:01:18

标签: facebook facebook-graph-api facebook-comments

我已经使用Graph API 从网址获取Facebook评论。这很好用。

但我有一个问题。从框中隐藏的注释(社交插件),并显示在API的JSON响应中。但是我不希望那些出现在那里。如果它是一个主持评论,那么没有任何领域可以获取信息。

Array(
    [id] => 10150178257599373_16650724
    [from] => Array
    (
        [name] => Books, EBooks
        [category] => Author
        [id] => 182404265135935
    )
    [message] => Thank you, Facebook
    [created_time] => 2011-06-06T03:21:06+0000
)

正如您所看到的,没有“温和”信息的字段。我该怎么办?

2 个答案:

答案 0 :(得分:1)

双倍温和!

您可以通过Fb.Event.subscribe为每个新评论创建一个数据库条目,并在Facebook上评论评论后,在数据库中标记评论并仅打印出标记的评论。这有点烦人,但到目前为止唯一的解决方案是:(

如果Facebook可以在他们的JSON中实现这些信息,或者更好的只是在Graph API中添加评论的评论,那将是很棒的。

答案 1 :(得分:1)

我最近碰到了这个并且能够使用FQL来获取评论,而没有那些标记为私有的(我认为这意味着未经调整?)我在javascript中做了这个,但是没有理由不能重写这段代码在PHP或其他什么。

 fql = "SELECT post_fbid, fromid, object_id, text, time, comments FROM comment WHERE object_id IN (SELECT comments_fbid FROM link_stat WHERE url ='" + commentsUrl + "') and is_private = 0 limit 10";

获取此数据后,循环访问并获取所有用户ID:

FB.api({method: 'fql.query',query: fql},function (comments) {
    $.each(comments, function (index, comment) {
       userIds.push(comment.fromid);
    });
});

使用用户ID,使用图形api获取每个用户的名称,并创建一个类似于图api的json响应的对象:

FB.api('?ids=' + userIds.join(','), function (responseIds) { 

    $.each(comments, function (index, comment) {
        comment.message = comment.text;
        comment.created_time = comment.time;
        comment.from = {id: comment.fromid, name: responseIds[comment.fromid].name};

    });
});