2013-05-09 71 views
4

我如何能够看到我的哪些朋友参加Facebook活动?我可以使用Facebook SDK获取所有与会者的名单,并使用GraphPath:@“eventId/attending /”。获取Facebook朋友参加活动?

我想甚至可以使用Graph API?我阅读了一些关于如何使用FQL实现这一点的答案,但不知道如何在iOS中实现它。我想出的唯一选择是让所有的朋友和所有与会者互相交叉引用,但这非常不方便。

那么,如何才能让我的Facebook朋友参加一个活动?

回答

1

好的,所以我找到了解决我的问题的方法......通过FQL实现我想要的唯一方法。基本上,它将您的朋友与参与者进行交叉引用,但在Facebook服务器上进行交叉引用,并且您只会收到您要求的数据(在我的情况下为用户ID,名称,图像)。我还没有想出如何设置一个限制和偏移,但我并不需要它,我认为这是可能通过FQL太...

这里是我的代码:

-(void)getFriendsAttending{ 
    NSLog(@"getting friends"); 
    NSString *fql = [NSString stringWithFormat:@"SELECT uid, name, pic FROM user WHERE uid IN (SELECT uid FROM event_member WHERE eid = %@ AND rsvp_status = 'attending' AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me()))", fbID]; 

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObject:fql forKey:@"q"]; 
    [FBRequestConnection startWithGraphPath:@"/fql" 
           parameters:params 
           HTTPMethod:@"GET" 
          completionHandler:^(FBRequestConnection *connection, 
               id result, 
               NSError *error) { 
           if (error) { 
            NSLog(@"Error: %@", [error localizedDescription]); 
           } else { 
            NSLog(@"Friends at event %@: %@", fbID, result); 
           } 
          }]; 

} 

这里为了清楚纯FQL查询(123456789 - 作为事件ID):

SELECT uid, name, pic FROM user WHERE uid IN (SELECT uid FROM event_member WHERE eid = 123456789 AND rsvp_status = 'attending' AND uid IN (SELECT uid2 FROM friend WHERE uid1 = me())) 
+0

这只是返回一个空白数据对象:(这很奇怪,因为组成部分工作正常... – nbsp 2014-07-15 23:56:17

+0

@nbsp它的一个旧的答案 - 也许他们改变了以来? – 2014-07-21 08:25:14

+0

括号是错误的 – 2014-08-04 14:40:31

0

只要使用{event id} /参加,然后根据您的真实朋友列表筛选此。

+0

好的,但如果有500名与会者呢?我不得不下载整个列表来检查它。它更方便设置限制...我这样做,我只会得到限制内的朋友... – 2013-05-09 19:49:12

2

这是由Facebook的

提供的教程,您可以检查是否有特定的用户回答“是”的事件通过 发出HTTP GET到/ EVENT_ID /出席/ USER_ID。这些操作 需要非公开的 事件的user_events或friends_events权限,并返回具有名称,ID和 rsvp_status字段的对象数组。在检查单个用户时,如果用户未对事件做出回复“是”,则返回空数据 。

您可以通过检查该链接的事件类别检查:

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

使用/EVENT_ID /出席/ USER_ID,看看哪些朋友正关注事件

+0

多数民众赞成在我看来,但这并不意味着我将不得不为每个单一用户执行此操作。 。是不是有办法解决它? – 2013-05-09 19:47:10

+0

我发现它需要EVENT_ID/invite/USER_ID,/参加/什么也不做(很像眼罩) – nbsp 2014-07-15 23:52:11

0

使用FQL查询尝试:

SELECT uid FROM event_member WHERE eid = YOU_EVENT_ID_HERE AND rsvp_status = 'attending' 

使用图形API:

/YOU_EVENT_ID_HERE/attending 

这将返回“参加的朋友”用户标识(uid)。

ASH

+2

我已经回答了这个问题,我敢肯定这将返回所有人参加,而不仅仅是我的朋友出席 – 2013-07-19 12:55:27

+0

你对其他解决方案有任何问题吗?或者你的唯一可能性? – 2013-07-23 17:35:15

+0

我的所有其他解决方案是唯一有效的可行性... – 2013-07-24 21:46:26