1

我正在使用 Facebook 评论框插件:

<fb:comments href="${myPageUrl}" num_posts="20" width="630"></fb:comments>

每件事都运行良好。问题是我想将发布的评论存储到我的数据库中。有什么方法可以获取评论框中发布的文本。

我正在使用以下 js 来捕获comment-create事件。

FB.Event.subscribe('comment.create', function(response) {        
        alert(response.commentID)
});

我从中得到了一些commentId,但我不知道如何获取发布在特定comment-create事件上的确切评论。

4

3 回答 3

2

Coomie:实际上,每当发布评论时,我都会通过“comment.create”来捕捉事件。我能够赶上该事件,但我想知道如何获取在该特定事件上发布的评论(文本)。像 event.text 或 event.comment 但没有找到直接的方法

所以,现在我正在用 fql 操作它。这与您的示例有些相似。首先检索整个列表,然后选择最上面的一个。我的示例代码如下:

FB.Event.subscribe('comment.create', function(response) {
      FB.api({
        method: 'fql.query',
        query: "SELECT post_fbid, fromid, object_id, text, time from comment WHERE  object_id in (select comments_fbid from link_stat where url ='${PageUrl}') order by time desc limit 1"
      },
      function(response) {
        var feed = response[0];          
        alert(feed.text)
      });
});  

所以这个方法给了我想要的结果。

于 2012-02-15T14:22:55.807 回答
1

我没有完整的答案,但这应该会让你上路。

您可以使用 facebook graph api 提取有关开放图 id 的信息(开放图 id 是 FB 识别人员、网站、应用程序或 URL 的方式)。例如。此页面: http: //www.inhousegroup.com.au/newsroom/23-best-practice-for-advanced-seo/(解雇我的地方)使用评论框。该网页的开放 ID 为 10150441190653416。因此,当您在此页面上发表评论时,facebook 会将您的评论视为该页面“墙上”的墙上帖子。

使用图形 API,您可以在此处获取有关页面的一些 JSON 信息:http://graph.facebook.com/10150441190653416

你可以从这个地址获取帖子:http: //graph.facebook.com/10150441190653416/posts

但是您必须获得访问令牌。

然后,您只需在保存时导入帖子并将您的数据库与 JSON 进行比较,并根据需要添加记录。

祝你好运!

于 2012-02-10T06:50:01.123 回答
1
FB.Event.subscribe('comment.create', function(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 () {
    text = commentQuery.value[0].text;
    // Use your preferred way to inform the server to save comment
    $.post( 'http://example.com/comment', text )
  });
});
于 2012-11-07T08:24:10.330 回答