如何查看我的哪些朋友参加了 Facebook 活动?我可以使用 GraphPath:@"eventId/attending/" 获取使用 Facebook SDK 的所有与会者的列表。
使用 Graph API 甚至可以实现我想要的吗?我阅读了一些关于如何使用 FQL 实现这一点的答案,但不知道如何在 iOS 中实现它。我想出的唯一选择是让所有的朋友和所有的与会者相互参照,但这很不方便。
那么,如何让我的 Facebook 朋友只参加活动?
如何查看我的哪些朋友参加了 Facebook 活动?我可以使用 GraphPath:@"eventId/attending/" 获取使用 Facebook SDK 的所有与会者的列表。
使用 Graph API 甚至可以实现我想要的吗?我阅读了一些关于如何使用 FQL 实现这一点的答案,但不知道如何在 iOS 中实现它。我想出的唯一选择是让所有的朋友和所有的与会者相互参照,但这很不方便。
那么,如何让我的 Facebook 朋友只参加活动?
这是来自 Facebook 提供的教程
您可以通过向 /EVENT_ID/attending/USER_ID 发出 HTTP GET 来检查特定用户是否对事件响应“是”。这些操作需要非公共事件的 user_events 或 friends_events 权限,并返回具有 name、id 和 rsvp_status 字段的对象数组。检查单个用户时,如果用户未对事件响应“是”,则将返回空数据。
您可以通过检查此链接中的事件类别来检查它:
使用/EVENT_ID/attending/USER_ID查看哪个朋友正在参加活动
好的,所以我找到了解决问题的方法......实现我想要的唯一方法是通过 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()))
只需使用 {event id}/attending,然后根据您的实际朋友列表过滤它。
使用 FQL 查询尝试:
SELECT uid FROM event_member WHERE eid = YOU_EVENT_ID_HERE AND rsvp_status = 'attending'
使用图形 API:
/YOU_EVENT_ID_HERE/attending
这将返回“参加朋友”用户 ID (uid)。
灰