我已经使用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
)
正如您所看到的,没有“温和”信息的字段。我该怎么办?
答案 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};
});
});