2013-05-10 4 views
3

Я разрабатываю приложение fb, в котором я хочу дать пользователям временную строку, но мне нужно исключить такие истории, как «Пользователь любит фотографию», «комменты на фотографии друзей». Как я фильтрую и исключаю эти типы историйFacebook graph api, как получить пользовательский фид, без сообщений о симпатиях и комментариях пользователя?

+0

Я обновил свой ответ. –

ответ

0

Все данные json, которые вы получаете из Graph api, когда запрашиваете фид пользователей, имеют тип элемента, который может быть, например, Ссылка, комментарий, статус .... Выберите те, которые вам нужны.

+2

, но для этого ["story"] => string (28) "abcd любит ссылку.", Тип, который я получаю как статус, тогда как я узнаю, что он похож на комментарии, я получаю тип как пользователь – sajith

+0

Проверьте, есть ли в нем URL-адрес изображения. Если да, то это изображение. Могут быть и другие увлечения. Вы должны просмотреть все и фильтровать. –

+0

Хорошо, я нашел решение. Просто добавьте «me/feed? Fields = picture» –

1

Использование fql, поле "type" является "null", если описание является чем-то вроде "A follow B", "A нравится Intel.", "Прокомментировал его собственную ссылку." ... и т. Д .:

SELECT created_time,description,likes,message,post_id FROM stream WHERE source_id=me() AND type!="" AND created_time<=now() LIMIT 50 

Update: Я нашел мой запрос не исключает запись на странице истории, ответ Anvesh Саксене является правильным, чем мой.

выберите сообщение из потока, где source_id = я() И filter_key в (выберите filter_key из stream_filter где UID = я())

Update Wed может 15 2013: SEEM у нас возникли проблемы потому что у другой filter_key может быть один и тот же post_id. Например, какая-то связь может появиться как на «NF» filter_key и Линкс filter_key «app_2309869772» enter image description here

Update: я сделать некоторые исследования и, наконец, выйти из этого запроса (Replace 2 «меня()» другой user_id является тоже работает):

ВЫБРАТЬ viewer_id, app_id, target_id, post_id, created_time, сообщение, тип, постоянную ссылку из потока WHERE source_id = мне() И created_time < = сейчас() AND ((типа IN (46,80,128,237,247)) ИЛИ (тип = "" И target_id = me())) LIMIT 150

Этот API запрос FQL сравнить с веб-браузером (я тестировал с нажимали «Все истории» на моей стене):

Преимущество:

  • Все дублированные каналы, которые были созданы в течение короткого периода времени будут включены. Версия веб-браузера может исключать эти дублированные каналы.

Неудобство:

  • «помеченный кто-то» не будет включен (это имеет смысл, потому что источник идент не я(), и нет смысла запрашивать все друг и фильтр мной() IN (tagged_ids) из-за проблем с производительностью)
  • «Обновление обложки» и «Обновить фотографию профиля» не включены.
  • Я нашел, что сообщение пользователя пользователя с помощью мобильного телефона не возвращается из таблицы потоков, даже специфического post_id, мы ничего не можем сделать.
  • "(type =" "AND target_id = me())" не работает, когда ваш друг делится фотографиями и ссылками на вашей временной шкале. Статус, совместно используемый другом, работает.

Пожалуйста, сообщите мне, если у кого-то лучший запрос

Приветствия

2

Вы можете фильтровать эти Posts смотря на наличие ключа story или story_tags, поскольку они не присутствуют в сообщениях, сделанных Пользователь.

Цитируя documentation описание story ключа

Текста историй не намеренно создаваемых пользователями, такие, как генерируется, когда два пользователя становятся друзьями; вы должны иметь «Включить недавние истории деятельности» миграцию включена в приложение, чтобы восстановить эти истории

Или вы можете попробовать FQL в stream как этот

select message from stream where source_id=me() and type in (46,56,80,56,128,247) 
and filter_key in (select filter_key from stream_filter where uid=me()) 

, которые могут помочь вам уменьшить сообщения одному что вы желаете.

Update

Вы не могли бы потребовать, чтобы уменьшить результат, используя type поле проверяется 林果 皞, поэтому запрос сводится к

select message from stream where source_id=me() AND filter_key in 
(select filter_key from stream_filter where uid=me()) 
+0

Ваш ответ правильный, сравните со мной. Но я обнаружил, что не нужно вводить тип (46,56,80,56,128,247). msgstr "выбрать сообщение из потока где source_id = me() И filter_key в (select filter_key from stream_filter где uid = me())" уже достаточно, не так ли? –

+0

Да, может быть, я просто добавил их, чтобы быть уверенным. :-) :-P –

+0

Плохие новости, запрос может возвращать повторяющийся пост, см. Мой скриншот на stackoverflow.com/questions/16481191/.... Кроме того, я нашел сообщение для типа страницы 164, однако я не уверен, что тип стены всегда только (46,56,80,56,128,247) тип –

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