Получение всех моих мероприятий через Facebook iOS SDK
В моем приложении iOS я получаю токен доступа, используя следующий код:
[self.facebook authorize:[NSArray arrayWithObjects:@"user_events",
@"friends_events", nil]];
Затем я запрашиваю свои события со следующим кодом:
[self.facebook requestWithGraphPath:@"me/events" andDelegate:friendsVC];
Но в ответ я получаю только события, к которым я имею RSVP'd. Я хотел бы получить все мои события, в том числе те, к которым у меня нет RSVP'd.
Любые идеи?
Ответы
Ответ 1
Вы можете получить список событий независимо от их статуса RSVP со следующим запросом FQL:
SELECT eid, name, venue, location, start_time FROM event WHERE eid IN (
SELECT eid from event_member WHERE uid = me()
)
Это не возвращает статус RSVP для каждого события, а только детали событий. Вы можете использовать Batch Requests, чтобы получить как сведения о событиях, так и rsvp_status
с тем же запросом.
https://graph.facebook.com/?method=post&batch=[
{
"name":"rsvp",
"relative_url":"fql?q=SELECT+eid,rsvp_status+FROM+event_member+WHERE+uid=me()",
"omit_response_on_success":false
},
{
"relative_url":"?ids={result=rsvp:$.data.*.eid}"
}
]
Смотрите event
и event_member
таблица документацию для получения подробной информации о других полях, которые вы, возможно, захотите получить.
Примечания:
Начиная с 5 июля для доступа к публичным событиям потребуется токен доступа.
Ответ 2
Запрос
/я/события
дает вам только те события, которые пользователь (возможно) планирует посетить. Ответ не включает события, к которым пользователь был приглашен (но не ответил), или отклонен.
Другие запросы могут быть полезны:
Вы можете проверить, был ли пользователь приглашен на такое событие:
/EVENT_ID/приглашен/USER_ID
Состояние RSVP может быть проверено событием:
/EVENT_ID/посещения
/EVENT_ID/возможно
/EVENT_ID/отклонено
/EVENT_ID/приглашен
где каждый запрос возвращает список пользователей с запрошенным статусом RSVP.
Ответ 3
Я думаю, вы можете получить события по запросу fql. Вам нужно попробовать это.
Также см. этот How-To: используйте API-интерфейс Graph для управления событиями.
Вам понадобится HTTP. Получите следующее из Graph API:
fql?q=SELECT uid,eid,rsvp_status FROM event_member WHERE uid = me()
Вы можете вернуть все статусы из этого вызова.
{
"data": [
{
"uid": "723020003",
"eid": "19935786340002",
"rsvp_status": "not_replied"
},
{
"uid": "723020003",
"eid": "234524000290351",
"rsvp_status": "attending"
},
{
"uid": "723020003",
"eid": "210091000081240",
"rsvp_status": "declined"
},
{
"uid": "723020003",
"eid": "210091000341240",
"rsvp_status": "unsure"
}
]
}
Ответ 4
Это не полное решение, и это может не сработать, но посмотрите, можно ли получить доступ к фиду iCal для пользовательских событий Facebook. Я подписываюсь на мой канал iCal, и я заметил, что все события, даже новые, которые у меня еще есть для RSVP, включены в фид.
Что-то попробовать в любом случае!
Ответ 5
Используйте /me/events для получения событий, на которые пользователь ответил, и /me/events/not_replied для остальных.
Например (если вы создали сеанс):
[FBRequestConnection startWithGraphPath:@"/me/events/not_replied" completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
{
FBGraphObject* data = (FBGraphObject*)result;
NSMutableArray* array = [data objectForKey:@"data"];
//parse data etc..
}];
Подробнее см. https://developers.facebook.com/docs/graph-api/reference/v2.0/user/events/.