2011-09-06 158 views
2

我已经使用Graph API从Facebook获取Facebook评论。这工作很好。通过Graph API获取Facebook评论,但没有来自社交插件的隐藏评论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 
) 

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

+0

类似的问题: [有没有通过图形API过滤掉评论意见的方法?](http://stackoverflow.com/questions/9475075/is-there-a-way-to-filter-out-moderated-comments-with-the-graph-api )还有答案:-) – Rafen

回答

1

双中等!

您可以通过Fb.Event.subscribe为每个新评论创建一个数据库条目,只要您在Facebook上评论评论,请在数据库中标记注释并仅打印标记的注释。这是一个有点讨厌,但到目前为止propably唯一的解决办法:(

这将是巨大的,如果Facebook的可以实现他们的JSON的信息,或更好的只是把图形API在审核的评论。

1

我跑进这最近,并能够使用FQL来获得没有标记为私人(我假设手段unmoderated?)的评论?)我这样做在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"; 

取回此数据后,循环并抓取所有用户标识:

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}; 

    }); 
});