4

我有一个 Facebook 应用程序,它有自己的消息系统,但我仍然想显示用户在 Facebook 中通过用户分享或点赞所做的评论。

假设一个 URL(例如http://myapp.com/?myId=100005235)在 Facebook 中共享,人们在共享中添加评论。这样的评论(和用户名)是我想要检索的。

我可以用 facebook-js-sdk 来做吗?

4

2 回答 2

2

是的你可以。最简单的方法是对 Facebook 进行FQL调用。您还应该能够通过 Graph API 调用来执行此操作,但在我的测试中,我找不到返回所需数据的方法。

在 FQL 中,您需要查询三个不同的表:link_stat获取 URL 的 Facebook id、comments获取评论信息以及user获取已发表评论的注册用户的名称。

多查询紧随其后,为提高可读性而展开。

{
  "my_link":
     "SELECT comments_fbid, comment_count, normalized_url FROM link_stat WHERE 
        url ='http://funcook.com/receta.php?id=53' ",
   "comment":
     "SELECT object_id, fromid, time, text, username FROM comment WHERE 
        object_id IN (SELECT comments_fbid FROM #my_link)",
   "com_users":
      "SELECT name, uid FROM user WHERE uid IN (SELECT fromid FROM #comment)"
 }

您将得到一个 JSON 对象。通过我网站上的一些测试网址,我发现 my_link.comment_count并不总是等于count(comment). 我发现其中一个显示为零而另一个不显示的情况。

这是一个脚本:

<script>
  FB.api(
    '/fql', {q:{"my_link":"SELECT comments_fbid, comment_count, normalized_url FROM link_stat WHERE url='http://funcook.com/receta.php?id=53'",
        "comment":"SELECT object_id, fromid, time, text, username FROM comment WHERE object_id IN (SELECT comments_fbid FROM #my_link)",  
        "com_users": "SELECT name, uid FROM user WHERE uid IN (SELECT fromid FROM #comment)" }},
  function(response){
   console.log(response)
  });
</script>
于 2012-07-02T20:02:02.547 回答
0

这是评论帖子的 Graph API 参考。后者说每个帖子都有一个comments对象。

我以前真的从未使用过 Graph API,而且我不擅长在头脑中编写代码,所以我无法为您提供实际代码,但可能类似于以下内容:

FB.api(
    '/19292868552_10150189643478553', // fetch a post by its id
    function(response) {              // callback function
        for (var comment in response["comments"]["data"]) {

            // process comment

        }
    }
);

尽管在服务器端获取评论可能更有意义 - 取决于您的用例中更有意义的内容。

于 2012-06-29T06:57:48.093 回答