2010-09-14 4 views
3

Я разрабатываю приложение facebook, которое должно извлекать события, созданные некоторыми из моих друзей. Стандартный SQL-запрос будет выглядеть следующим образом:Facebook API получить события СОЗДАННЫЕ друзьями

NSString *fql1 = @"SELECT " 
@"eid, name, tagline, id, pic_small,host, description, start_time, creator " 
@"FROM " 
@"event " 
@"WHERE " 
@"creator = 1111111111 OR creator = 2222222222 OR creator = 333333333"; 

Facebook только позволяет фильтровать таблицы от индексированных полей (которые Ид в этой таблице). Я предполагаю, что смогу построить многовариантность. Кто-нибудь может помочь с этим? Я потратил некоторое время на поиски, не глядя. Мне нужен только один запрос, так что изучение целого fbl для этого в настоящее время не имеет смысла.

КСТАТИ: есть функция events.get - вы можете фильтровать по UID (документация говорит):

параметр: UID - фильтры по событиям, связанным с пользователем с этой жидкости.

АССОЦИАЦИЯ В каком смысле? являются ли эти творения твоими ?, приглашенными, посещающими или, может быть,? Почему документация на facebook настолько расстраивает? Когда я пытаюсь event.get с параметром uid, он возвращает результат с разными идентификаторами создателей, чем параметр uid. Функция Graph API: uid/events возвращает события, когда пользователь был приглашен, присутствовал или находился в другом статусе, но НЕ обязательно был создан им.

Что мне здесь не хватает? Я предоставил необходимые разрешения для своего приложения, он подключается, получает списки событий друзей, но не те события, которые я хочу.

Кажется, так просто, но я не могу найти прямолинейное решение.

Буду признателен за любую помощь.

+1

Multiquery - просто причудливое имя для запуска многих обычных запросов FqL в одном запросе, они не дадут вам ничего нового. Если у вас нет идентификаторов событий, вы не можете искать в поле создателя с помощью FQL. Лучше всего было бы, вероятно, исследовать 'events.get', но я понятия не имею, что он возвращает. – serg

+0

Когда я запросил event.get с параметром uid, я получил несколько событий, но ни один из них не был создан с помощью uid. Что именно этот метод возвращает? – Lukasz

ответ

3

Вы можете сделать что-то вроде этого:

SELECT 
    eid, name, tagline, pic_small,host, description, start_time, creator 
FROM 
    event 
WHERE 
    eid IN (
     SELECT 
      eid 
     FROM 
      event_member 
     WHERE 
      uid=111 OR uid=222) AND 
    (creator=111 OR creator=222) 

В основном это говорит получить пользователь события 111 или 222 является членом и тех, вернуть только те, которые они создали. Поскольку eid является индексируемым полем, FQL в порядке с этим и с удовольствием сделает дополнительную (creator = 111) обрезку для вас.

+0

Это выглядит очень перспективным. Однако - я получаю: операция не может быть завершена. (ошибка facebookErrDomain 602.). Что означает эта ошибка? Я где-то возиться с параметрами запроса или запросом не разрешен? – Lukasz

+1

К сожалению, id не является допустимым полем, это eid для таблицы событий. Я отредактирую запрос, чтобы исправить это. – jhchen

+0

Да. Я не обращал внимания, поскольку я знаю, что столбец nid в таблице событий. http://developers.facebook.com/docs/reference/fql/event. Спасибо. Ошибка ушла, я получаю ответ. Однако это 0 результатов, и я знаю, что должно быть какое-то ... хммм .. Я не могу голосовать за этот ответ, пока я не проверю его. – Lukasz

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