9

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

使用Graph-API, 和FQL(我认为这是如何做到的),我想列出我网站上发布的所有评论。

例子 -

Page Title1
--Comment1
--Comment2
--Comment3

Page Title2
--Comment1
--Comment2
--Comment3

Page Title3
--Comment1
--Comment2
--Comment3

etc.

请帮帮我。

4

3 回答 3

7

只要您有一组固定的要从中获取评论的子页面,就可以通过两种不同的方式。

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

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

批量请求


首先,您需要访问令牌。只需在浏览器中输入以下内容作为 url(归功于网站):

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

FB.api({
    method: 'fql.query',
    query: 'select text from comment where object_id in (select comments_fbid from link_stat where url="URL1" or url="URL2")'
  }, function(response) {
    // Do something with results
  });

结论

由于Facebook的这个限制,我打算切换到disqus.com,它显然支持这个功能(例如你可以从这个博客中看到。(搜索“最近的评论”)

于 2012-05-02T11:21:58.007 回答
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 将评论发送回您的站点,您可以将评论存储在数据库中,或者向自己发送一封电子邮件,通知您评论已发布.

于 2013-07-20T08:48:18.090 回答
0

参考:Facebook 评论插件

假设您的网站是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-天/

也检查一下

可以在此博客文章中找到用于拉取评论的示例代码

于 2012-04-18T07:13:08.927 回答