Я хочу искать сообщения (лента новостей) с помощью графического API за последние 30 дней данных? Какова наилучшая практика? И имеет ли API-интерфейс Facebook API ограничение API для ограничения запросов HTTP-запросов?
ПРИМЕЧАНИЕ. Ни одно из ниже не работает. Начиная с версии 2.3 API-интерфейса Facebook, конечная точка поиска устарела.
Копирование здесь в разделе «Поиск» :
поиск
Вы можете выполнить поиск по всем общедоступным объектам в социальном графе с помощью https://graph.facebook.com/search . Формат:
https://graph.facebook.com/search?q=QUERY&type=OBJECT_TYPE
Мы поддерживаем поиск следующих типов объектов:
* All public posts: https://graph.facebook.com/search?q=watermelon&type=post * People: https://graph.facebook.com/search?q=mark&type=user * Pages: https://graph.facebook.com/search?q=platform&type=page * Events: https://graph.facebook.com/search?q=conference&type=event * Groups: https://graph.facebook.com/search?q=programming&type=group * Places: https://graph.facebook.com/search?q=coffee&type=place¢er=37.76,122.427&distance=1000 * Checkins: https://graph.facebook.com/search?type=checkin
Вы также можете искать ленту новостей отдельного пользователя, ограниченную друзьями этого пользователя, добавив аргумент aq к URL-адресу домашнего подключения:
* News Feed: https://graph.facebook.com/me/home?q=facebook
Это один из способов сделать это. Но ваша лучшая ставка будет использовать FQL , который используется JavaScript SDK , с методом fb.dataquery . То, что вы хотите сделать, это использовать таблицу потоков для получения сообщений о статусе для пользователей.
Теперь, из вашего вопроса, я понимаю, что вы скорее используете версию PHP над версией Javascript. В соответствии с этим, что вам нужно сделать, это декодировать (используя json_decode
) объект json, полученный этим URL:
https://graph.facebook.com/[USERNAME/USERID]?fields=posts&access_token=[A VALID ACCESS TOKEN]
Насколько я знаю, у этого не будет предела. Однако ознакомьтесь с документами здесь .
Лучший способ – использовать функции PHP file_get_contents с этим URL-адресом.
В противном случае cURL получит тот же ответ; просто помните, что любые ответы находятся в формате JSON, поэтому используйте json_decode, чтобы начать обработку информации
Типичный фид facebook должен выглядеть так:
$feedurl = "https://graph.facebook.com/$user_id/feed?access_token=$valid_access_token"; $feed = file_get_contents($feedurl); $feed = json_decode($feed); foreach ($feed->data as $post){ //process each post }
Для поиска, насколько я вижу, нет конкретного способа поиска новостей или новостей для пользователей; но можно искать в facebook через свой API поиска. https://developers.facebook.com/docs/reference/api/
Это можно сделать с помощью Graph API
Как упоминалось в документации, установите с param на 30 дней назад. (Вычитание 30 дней, т. Е. 30 * 24 * 60 * 60 с текущей отметки времени, предоставило бы значение или может также использовать strtotime )
И, да, существует ограничение на количество вызовов API, как указано в политиках платформы Facebook , текущие ограничения :
~ (5M MAU): 5 миллионов пользователей, прошедших проверку подлинности для приложения
~ ( 100 Мб вызовов в день )
~ (50 миллионов показов в день).
17 августа 2016 года FQL больше не будет доступен и не может быть запрошен …
Я не понимаю, почему Facebook меняет весь SDK / API, а не обновляет его.
Моя дорогая, просто сделайте расширенное разрешение от пользователя либо с помощью кнопки входа в систему, либо с помощью логина входа (в случае php sdk), тогда вам просто нужно получить токен доступа, позвоните, сделав звонок json, чтобы получить информацию, что вам нравится.
<fb: login-button perms = 'read_stream' autologoutlink = 'true'> </ fb: login-button>
Если у вас есть токен доступа для пользователя, вы просто вызываете график api для этого
$ name = json_decode (file_get_contents ('https://graph.facebook.com/USERID/feed?access_token='.Your ACCESS TOKEN));
Он вернет вам то, что вам нужно. Но не забудьте заменить
ИДЕНТИФИКАТОР ПОЛЬЗОВАТЕЛЯ
с вашим идентификатором пользователя и
ВАШ ДОСТУП
с вашим токеном доступа.
Вы можете использовать этот вызов с маркером доступа из проводника диаграмм, где номер представляет собой page ID
:
123123123123123?fields=posts.limit(5)