Как получить непрочитанные сообщения, используя 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. Пожалуйста, смотрите наш список изменений для текущей информации о версии.

Это утверждение верно, но следовать ему не очень умно.


Действительно, я проверил дальше и выяснил:

Я не ожидал, что 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.

Ждать и смотреть...

Другие вопросы по тегам