Если текущий пользователь подключен к приложению, то это очень легко сделать, если они не являются, то мы должны сделать некоторые догадки. Это связано с тем, что идентификатор, возвращаемый в событии 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 с идентификатором комментария и возвращает результат.
Во втором методе, когда пользователь не подключен к нашему приложению, он запрашивает все общедоступные комментарии и ищет самый последний, и предполагает, что это тот, который сделан пользователем. Это будет работать только в среде, где у вас не будет нескольких пользователей, делающих комментарии одновременно - это приведет к неправильным результатам в этой ситуации.
Надеюсь, что это поможет.
Пробовал ли вы регистрировать 'href', чтобы узнать, что он содержит. Насколько я помню, первым аргументом обычно был «ответ», содержащий сам комментарий, а не href? – adeneo
href - это только те теги, которые вы прокомментировали, без комментариев. –