#facebook #facebook-fql
#Facebook #facebook-fql
Вопрос:
Я пытаюсь выяснить, как получить имя пользователя Facebook, который оставил комментарий в социальном плагине комментариев, используя FB.Событие.subscribe и событие comment.create.
Я вижу только 2 свойства response
объекта:
response.href
: URL страницы, на которой был оставлен комментарийresponse.commentID
: Идентификатор потока комментариев
Возможно ли реализовать код на стороне клиента, чтобы получить имя пользователя facebook, который оставил комментарий? Я пытаюсь сэкономить дополнительное время для моего сервера, чтобы вызвать graph API, чтобы получить все комментарии, а затем попытаться выяснить, кем был пользователь, который оставил самый последний. Я думал, что может быть способ запустить запрос FQL, но я в растерянности.
Я подумал, что это было бы очевидной вещью для facebook event, но их документация настолько плоха, что я ничего не смог увидеть.
Обновление: я пробовал использовать FB.api, как предложил другой пользователь, и использую /me
, но я не могу это использовать, поскольку пользователь, оставивший комментарий, не предоставил мне никаких разрешений. Это сбивало с толку, потому что они вошли в систему, чтобы опубликовать комментарий в поле для комментариев, а имя пользователя является общедоступной информацией, если вы переходите на facebook страницу пользователя. Итак, мне нужен способ запросить имя комментирующего пользователя без использования /me
в FB.api.
Ответ №1:
Этот метод определенно работает для получения имени .. но возникает проблема с состоянием гонки, если это поток, который получает массу комментариев, поскольку запрос на получение комментариев может не быть отправлен до создания другого комментария:
FB.Event.subscribe('comment.create', function(comment) {
FB.api('comments', {'ids': comment.href}, function(res) {
var data = res[comment.href].data;
console.log(data.pop().from.name);
});
});
Это работает и без аутентификации пользователя в вашем приложении.
Комментарии:
1. Это выдает ошибку…
Uncaught TypeError: Cannot call method 'pop' of undefined
Ответ №2:
Прочитав комментарий TMC ниже, я понял, что это невозможно без разрешений. Если вы хотите этого, вам придется попросить каждого комментатора предоставить вам базовые разрешения.
ОРИГИНАЛЬНЫЙ ОТВЕТ
Вы можете использовать Facebook Javascript SDK-функцию FB.api, которая работает так же, как функция api PHP SDK, но возвращает строку JSON. Взгляните на эту страницу для получения документации. Возможно, вам также захочется взглянуть на документацию по объекту комментария.
Комментарий имеет свойство, from
которое выдает id
и name
пользователя.
Комментарии:
1. Насколько я могу судить, идентификатор комментария имеет префикс идентификатора потока комментариев. Однако я не вижу простого способа получить идентификатор комментария.
response.commentID
Атрибутом является идентификатор потока комментариев (например,1234
), а не конкретный идентификатор комментария (например,1234_56789
).2. Оказывается, это предложение использовать FB.api не сработает. Я пробовал запрашивать «/ me» с помощью FB.api, но пользователи, оставляющие комментарии, всегда будут возвращать
undefined
forresponse.name
, потому что пользователь не предоставил мне никаких разрешений, несмотря на вход в систему для использования поля комментариев. Мне нужен другой способ без использования/me
FB.api.