【问题标题】:Get Facebook friends attending an event?让 Facebook 朋友参加活动?
【发布时间】:2013-05-09 12:35:28
【问题描述】:

如何查看我的哪些朋友参加了 Facebook 活动?我可以使用 GraphPath:@"eventId/attending/" 获取使用 Facebook SDK 的所有与会者的列表。

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

那么,如何让我的 Facebook 朋友只参加活动?

【问题讨论】:

    标签: iphone ios facebook facebook-graph-api


    【解决方案1】:

    这是来自Facebook提供的教程

    您可以通过以下方式检查特定用户是否对事件响应“是” 向 /EVENT_ID/attending/USER_ID 发出 HTTP GET。这些操作 非公开需要 user_events 或 friends_events 权限 事件并返回一个包含名称、id 和 rsvp_status 字段。检查单个用户时,将显示一个空数据 如果用户没有对事件响应“是”,则返回。

    您可以通过查看此链接中的事件类别来查看:

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

    使用 /EVENT_ID/attending/USER_ID 查看哪个朋友正在参加活动

    【讨论】:

    • 这对我来说很清楚,但这确实意味着我必须为每个用户执行此操作……难道没有办法解决吗?
    • 我发现它需要是 EVENT_ID/invited/USER_ID,/attending/ 什么都不做(很像护目镜)
    【解决方案2】:

    好的,所以我找到了解决问题的方法...实现我想要的唯一方法是通过 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()))
    

    【讨论】:

    • 这只是返回一个空白数据对象:(这很奇怪,因为组成部分工作正常......
    • @nbsp 这是一个旧答案 - 也许他们从那以后改变了它?
    【解决方案3】:

    只需使用 {event id}/attending,然后根据您的实际朋友列表过滤它。

    【讨论】:

    • 好的,但是如果有 500 名与会者呢?我必须下载整个列表来检查它。设置限制更方便……我这样做了,我只会得到限制内的朋友……
    【解决方案4】:

    使用 FQL 查询试试:

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

    使用图形 API:

    /YOU_EVENT_ID_HERE/attending
    

    这将返回“Attending Friends”用户 ID (uid)。

    【讨论】:

    • 我已经回答了这个问题,我很确定这会让所有的人都参加,而不仅仅是我的朋友参加。
    • 您对其他解决方案有什么问题吗?还是只有你的可能性?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多