如何列出我的域中的所有评论

时间:2012-04-18 05:11:04

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

我在我的网站中使用的是Facebook Comment的HTML5版本。我有自己的Facebook APP Id。

使用Graph-APIFQL(我认为这是怎么做的),我想列出我网站上发布的所有评论。

示例 -

Page Title1
--Comment1
--Comment2
--Comment3

Page Title2
--Comment1
--Comment2
--Comment3

Page Title3
--Comment1
--Comment2
--Comment3

etc.

请帮帮我。

3 个答案:

答案 0 :(得分:7)

只要您有一个固定子网页集,您就可以通过两种不同的方式获取评论。

如果您有大量子页面或可变数量,那么您没有一个良好的可扩展解决方案 - 许多人一直在寻找一个:

对于网站中的固定子网页集,您可以使用批处理请求或FQL查询。

批量请求


首先,您需要访问令牌。只需在浏览器中输入以下内容作为网址(信用到this网站):

https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=APP_ID&client_secret=APP_SECRET



And this is the javascript jquery code to make a batch request to fetch comments from several urls at once:

$.ajax({
  url: 'https://graph.facebook.com/',
  type : "POST",
  data: {
    access_token : 'YOUR_APP_ACCESS_TOKEN',
    batch : '[ \
    {"method":"GET","relative_url":"URL1"}, \
    {"method":"GET","relative_url":"URL2"} \
    ]'
  },
  success: function(data) {
    jdata = JSON.parse(data);
    $.each(jdata, function(index,value){
        jdata[index].body = JSON.parse(value.body);
        console.log(value.body);
    });
    // Do whatever you want with jdata
  }
});

FQL


inspired from this post


<强>结论

由于Facebook的这种限制,我计划切换到显然支持此功能的disqus.com(例如,您可以从此blog看到。)(搜索“最近的评论”)

答案 1 :(得分:1)

Facebook不希望列出您网站上的所有评论,而是希望您实施代码,以便在您的网站上发布新评论时收到通知。

要实现这一点,您必须将一些Javascript放入发布评论的页面中,以便通知您自己:

window.fbAsyncInit = function(){
    console.log("subscribing to comment create");
    FB.Event.subscribe('comment.create',function(response){
        console.log("facbeook comment created: " + JSON.stringify(response));
        var commentQuery = FB.Data.query('SELECT fromid, text FROM comment WHERE post_fbid=\'' + response.commentID + '\' AND object_id IN (SELECT comments_fbid FROM link_stat WHERE url=\'' + response.href + '\')');
        FB.Data.waitOn([commentQuery], function () {
            console.log("Facebook comment: " + JSON.stringify(commentQuery));
        }); 
    });
};

除了将评论记录到控制台之外,您需要实现一些AJAX,将评论发送回您的网站,您可以将评论存储在数据库中,或者发送电子邮件通知您评论已发布。

答案 2 :(得分:0)

参考:Facebook Comments Plugin

说你的网站是http://mywebsite.com/blog.php?id=3并且你有一个facebook评论插件, 你可以这样访问评论

 https://graph.facebook.com/comments/?ids={YOUR_URL}.

{YOUR_URL} becomes http://mywebsite.com/blog.php?id=3

示例1:(开发者facebook doc网站上安装的评论插件)

网站:http://developers.facebook.com/docs/reference/plugins/comments

获取评论:https://graph.facebook.com/comments/?ids=http://developers.facebook.com/docs/reference/plugins/comments

示例2:

网站:http://techcrunch.com/2011/04/08/the-seven-most-interesting-startups-at-500-startups-demo-day/

获取评论:https://graph.facebook.com/comments/?ids=http://techcrunch.com/2011/04/08/the-seven-most-interesting-startups-at-500-startups-demo-day/

检查一下

可以在此blog post

上找到提取评论的示例代码