Поиск сообщений с помощью Facebook Graph Api

Я хочу искать сообщения (лента новостей) с помощью графического 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&center=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)