Facebook FQL - все события фан-страницы, которые посещает пользователь - PullRequest
0 голосов
/ 26 января 2011

Я пытаюсь добиться следующего с помощью Facebook Multiquery FQL, получить список всех событий на фан-страницах, в которых я участвую.

У меня есть приведенная ниже логика, и я попытался реализовать нечто похожее с оператором FQL ниже.

  1. получить список всех событий, созданных фан-страницей (с указанным идентификатором),
  2. получить список всех моих (пользователей) событий, посещающих
  3. Соответствие eid из таблицы FQL для event_member
  4. Если они соответствуют идентификаторам, а rsvp_status равен посещению
  5. результат отображения.

FQL Multi

{"query1": "ВЫБЕРИТЕ eid ОТ события WHERE eid IN (ВЫБЕРИТЕ eid FROM event_member ГДЕ UID = $ fanpageID) "," query2 ":" ВЫБЕРИТЕ rsvp_status ИЗ МЕРОПРИЯТИЯ WHERE uid = $ uid и EID IN (ВЫБЕРИТЕ eid FROM # query1) "}

Я знаю, что утверждение неверно, но я изо всех сил пытаюсь это сделать. Я достиг этого с помощью Graph API, используя очень грязный набор циклов foreach в моем PHP-коде.

Было бы гораздо эффективнее использовать один FQL-оператор с несколькими запросами.

Любые предложения будут великолепны.

EDIT

Проблема, с которой я столкнулся сейчас, заключается в том, что оператор FQL ifaour работает в консоли FQL Query (возвращает результаты), однако при выполнении следующего запроса возвращается пустой массив.

Когда я разбираю оператор просто (ВЫБЕРИТЕ eid ОТ события WHERE creator = $ fanPageID), консоль FQL подсвечивает, что eid не индексируется.

Вот мой PHP

функция usersEventsPoints ($ uid, $ facebook, $ fanpageID) {

        $events = "SELECT eid FROM event WHERE creator=$fanpageID AND eid

IN (ВЫБЕРИТЕ ИД ИЗ Event_member WHERE uid = $ uid AND rsvp_status = \ "Участие \") ";

        $eventsAttendance = $facebook->api(array(
              'method' => 'fql.query',
              'query' =>$events, ));

        $eventsAttendingcount = 0;

Еогеасп ($ eventsAttendance as $ eventsAttendanceFetch) {

    if($eventsAttendanceFetch['eid'] == true){
                $eventsAttendingcount++;
            }
        }
        return $eventsAttendingcount;
   }

Blockquote

Есть идеи?

Ответы [ 3 ]

1 голос
/ 26 января 2011

Это очень простая задача:

SELECT eid FROM event WHERE creator = $fanpageID AND eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status = "attending")

Это вернет идентификаторы всех событий, которые созданы / принадлежат странице с идентификатором $fanpageID, и вы являетесь участником (me())и ваш статус attending.

РЕДАКТИРОВАТЬ :
Вы циклически возвращаете массив только для того, чтобы получить счет ?!Вы можете просто использовать:

$eventsAttendingcount = count($eventsAttendance);

Также убедитесь, что пользователь, которому вы соответствуете, авторизовал ваше приложение и предоставил вам правильное разрешение!

0 голосов
/ 02 июня 2017

Если вы хотите получить следующие 10 событий зарегистрированного пользователя на Facebook, где события имеют значение attending, вы можете построить свой запрос Swift следующим образом:

let graphPath = "/me/events?limit=10&type=attending&since=now"
let params = ["fields": "id, name, category, start_time, end_time, timezone, updated_time, type, attending_count, owner, place"]

let request = GraphRequest(graphPath: graphPath, parameters: params, accessToken: accessToken, httpMethod: .GET, apiVersion: apiVersion)
request.start {}
0 голосов
/ 26 января 2011

Я не уверен, что понимаю, в чем проблема - я выполнил вашу инструкцию FQL, и она возвращает список событий, а затем ваш статус RSVP?

В другой заметке, почему бы не использовать events.get метод.Вы передаете UserId, и он будет отображать информацию о событии для вас.Вы можете фильтровать по статусу RSVP.

Только что отмечен, и метод events.get находится в процессе устаревания.

Вы должны использовать новый Graph API, который дает вам списокучастников вашего мероприятия:

http://developers.facebook.com/docs/reference/api/event

Список участников можно получить с помощью

https://graph.facebook.com/EVENT_ID/attending

...