如何根据评论ID获取评论文本?

时间:2014-01-08 07:40:38

标签: javascript jquery ajax facebook

如何根据评论ID获取评论文字?

我使用facebook js api,当评论创建时,我想使用ajax在我的数据库中插入评论内容,但是下面的代码没有返回文本内容,我怎样才能获得内容?

在ajax中,我会根据commentID获取内容,如何在FQL中获取内容?

<script type="text/javascript">
FB.Event.subscribe(
    'comment.create',
    function(href,commentID){
        // can only get commentID
        // I need to get comment content, how to do ?

        $.ajax({
            url:'jy_ajax.php',
            type:'POST',
            data:{
                commentID:commentID
            },
            success:function(){}
        });
    }
</script>

1 个答案:

答案 0 :(得分:1)

如果当前用户已连接到您的应用程序,那么这很容易做到,如果不是,那么我们必须做一些猜测。这是因为comment.create事件中返回的ID不是公共评论ID - 它是私有ID,因此只有创建者才能检索评论消息。我不知道为什么Facebook这样做了。

FB.Event.subscribe(
  'comment.create',
  function(commentCreateResponse) {

    /* if the user is authed then you can do this */
    FB.api( '/' + commentCreateResponse.commentID, function(commentResponse) {
      console.log(commentResponse.message);
    });

    /* if not, then we have grab all the comments and guess */
    FB.api('/comments?ids='+commentCreateResponse.href, function(allCommentsResponse) {
      var comments = allCommentsResponse[commentCreateResponse.href].comments.data;
      var mostRecentComment = false;
      for (var i = 0; i < comments.length; i++) {
        var comment = comments[i];
        if ((false == mostRecentComment) || (comment.created_time > mostRecentComment.created_time)) {
          mostRecentComment = comment;
        }
      }
      console.log(mostRecentComment.message);
    });
  }
);

上面的示例显示了这两种方法 - 您应该删除不需要的方法。

在第一种方法中,当用户连接时,它只是使用注释ID点击Graph API并返回结果。

在第二种方法中,当用户未连接到我们的应用程序时,它会查询所有公共可用评论并查找最新评论,并假设这是用户制作的评论。这只适用于您没有多个用户同时发表评论的环境 - 在这种情况下,结果会出错。

希望有所帮助。