【问题标题】:How to list all comments in my domain如何列出我域中的所有评论
【发布时间】:2012-04-18 05:11:03
【问题描述】:

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

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

例子-

Page Title1
--Comment1
--Comment2
--Comment3

Page Title2
--Comment1
--Comment2
--Comment3

Page Title3
--Comment1
--Comment2
--Comment3

etc.

请帮帮我。

【问题讨论】:

  • 如果您对以下任何答案表示赞赏,请将其中一个标记为正确答案。这将提高您的声誉,以及答案作曲家的声誉。

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


【解决方案1】:

Facebook 不希望列出您网站上的所有 cmets,而是希望您实现代码,以便在您网站上的任何位置发布新评论时获得通知。

要做到这一点,您必须在发布评论的页面中添加一些 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】:

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

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

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

    批量请求


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

    @987654329@

    这是 javascript jquery 代码,用于发出批处理请求以一次从多个 url 获取 cmets:

    $.ajax({
      网址:'https://graph.facebook.com/',
      类型:“POST”,
      数据: {
        access_token : 'YOUR_APP_ACCESS_TOKEN',
        批 : '[ \
        {"方法":"GET","re​​lative_url":"URL1"}, \
        {"方法":"GET","re​​lative_url":"URL2"} \
        ]'
      },
      成功:函数(数据){
        jdata = JSON.parse(数据);
        $.each(jdata,函数(索引,值){
            jdata[index].body = JSON.parse(value.body);
            控制台.log(value.body);
        });
        // 用 jdata 做任何你想做的事
      }
    });
    

    FQL


    灵感来自 this 帖子

    FB.api({
        方法:'fql.query',
        查询:'从 object_id 所在的评论中选择文本(从 url="URL1" 或 url="URL2" 的 link_stat 中选择 cmets_fbid)'
      },功能(响应){
        // 对结果做一些事情
      });
    

    结论

    由于Facebook的这个限制,我打算切换到disqus.com,它显然支持这个功能(例如你可以从这个blog看到。(搜索'recent cmets')

    【讨论】:

      【解决方案3】:

      参考:Facebook Comments Plugin

      假设您的网站是http://mywebsite.com/blog.php?id=3,并且您有一个 facebook cmets 插件, 您可以通过这种方式访问​​ cmets

       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

      获取 cmets: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/

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

      也检查一下

      拉取cmets的示例代码可以在blog post找到

      【讨论】:

      • 实际上,我试过了,我得到了这个输出 - 但我的网站里确实有 cmets !! { "<a href="/default/index/tourl?u=aHR0cDovL3d3dy5teXNpdGUuY29t" rel="nofollow" target="_blank">mysite.com</a>": { "cmets": { "data": [ ] } } }
      • 是位于 mysite.com 上的 cmets 插件,您应该提供完整的 url。我相应地更新了我的答案,请检查
      • 一定要转义 url中的任何特殊字符。例如,如果您的 url 是:'mywebsite.com/blog.php?id=3',则从此页面查询 cmets 的方式是'graph.facebook.com/comments/?http://mywebsite.com/…'
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-23
      • 1970-01-01
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      相关资源
      最近更新 更多