2014-01-08 6 views
0

как я могу получить текстовую базу комментариев на id комментария?как я могу получить текстовую базу комментариев на 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> 
+0

Пробовал ли вы регистрировать 'href', чтобы узнать, что он содержит. Насколько я помню, первым аргументом обычно был «ответ», содержащий сам комментарий, а не href? – adeneo

+0

href - это только те теги, которые вы прокомментировали, без комментариев. –

ответ

1

Если текущий пользователь подключен к приложению, то это очень легко сделать, если они не являются, то мы должны сделать некоторые догадки. Это связано с тем, что идентификатор, возвращаемый в событии comment.create, не является идентификатором открытого комментария - он является закрытым, поэтому только создатель может получить сообщение комментария. Я не знаю, почему 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); 
    }); 
    } 
); 

В приведенном выше примере показаны оба метода - вы должны удалить метод, который вам не нужен.

В первом методе, когда пользователь подключен, он просто обращается к API-интерфейсу Graph с идентификатором комментария и возвращает результат.

Во втором методе, когда пользователь не подключен к нашему приложению, он запрашивает все общедоступные комментарии и ищет самый последний, и предполагает, что это тот, который сделан пользователем. Это будет работать только в среде, где у вас не будет нескольких пользователей, делающих комментарии одновременно - это приведет к неправильным результатам в этой ситуации.

Надеюсь, что это поможет.

Смежные вопросы