Как получить непрочитанные сообщения, используя Graph API?
Я занимаюсь разработкой приложения, которое получает непрочитанные входящие сообщения Facebook.
Следующий запрос v2.0 FQL работает нормально:
SELECT sender, body FROM unified_message
WHERE thread_id IN
(SELECT thread_id FROM unified_thread WHERE folder = 'inbox' AND unread=1)
AND unread=1
ORDER BY timestamp DESC
В результате у нас есть список всех непрочитанных сообщений.
Но Facebook говорит:
Версия 2.0 API платформы Facebook является последней версией, в которой будет доступен FQL. Версии после 2.0 не будут поддерживать FQL. Пожалуйста, перенесите ваши приложения, чтобы использовать Graph API вместо FQL. Пожалуйста, смотрите наш список изменений для текущей информации о версии.
Итак, я ищу способ сделать это только с Graph API. Я попробовал следующее:
Bundle params = new Bundle();
params.putString("unread", ">0");
new Request(session,"/me/inbox/",params,HttpMethod.GET,new Request.Callback() {
public void onCompleted(Response response) {
...
}
}
).executeAsync();
безуспешно. Я получаю все темы, тогда как мне нужны только непрочитанные темы. Как это сделать тогда?
1 ответ
Я прошу прощения за совет, который я дал, когда я слепо процитировал следующее уведомление Facebook:
Однако вы не должны больше использовать FQL:
Версия 2.0 API платформы Facebook является последней версией, в которой будет доступен FQL. Версии после 2.0 не будут поддерживать FQL. Пожалуйста, перенесите ваши приложения, чтобы использовать Graph API вместо FQL. Пожалуйста, смотрите наш список изменений для текущей информации о версии.
Это утверждение верно, но следовать ему не очень умно.
Действительно, я проверил дальше и выяснил:
- v2.0 доступен до 7 августа 2016 года,
- API Graph пока не подходит для вашего текущего использования.
Я не ожидал, что Graph API будет настолько слабым. Graph API делает невозможным построение запроса путем фильтрации любого поля. Например, мы не можем делать простые вещи, такие как:
me/threads?unread_count>0
,me/threads?fields=unread_count.more(0)
,
Прямо сейчас с Graph вы должны пройти через все потоки и проверить, какие из них имеют unread > 0
, Вы бы потеряли время и пропускную способность. Кроме того, message
стол даже не имеет unread
поле, которое сделало бы невозможным для вас найти какие-либо конкретные непрочитанные сообщения.
Так что лучше всего продолжать использовать FQL. Вы в безопасности на данный момент. К 2016 году Facebook, вероятно, улучшит способ, которым мы делаем запросы с помощью Graph API.
Ждать и смотреть...