0

我想通过Facebook的Multiquery FQL实现以下功能,获取我参加的所有粉丝页事件的列表。Facebook FQL - 所有的粉丝页用户参加的活动

我有下面的逻辑,并试图用下面的FQL语句实现类似的东西。 (使用特定ID)由/从粉丝页面创建的所有事件的

  1. 获取列表
  2. 让我所有的(用户)事件的参加
  3. 匹配EID的从event_member FQL表列表
  4. 如果它们匹配ID,并且rsvp_status等于参加
  5. 显示结果。

FQL多

{ “QUERY1”: “SELECT EID FROM事件WHERE EID IN(SELECT EID FROM event_member 其中uid = $ fanpageID)”, “QUERY2”:“SELECT rsvp_status从event_member WHERE 的uid = $ uidAND EID IN (SELECT EID FROM#QUERY1)“}

我知道说法是不正确的,但我挣扎试图做到这一点。我已经通过Graph API使用我的PHP代码中的一组非常复杂的foreach循环实现了这一点。

使用单个多查询FQL语句会更有效率。

任何建议将是伟大的。现在有

编辑

问题IM,是ifaour的FQL语句工作的FQL查询控制台(返回结果)内,但是当我运行下面,并返回空数组。

当我将该语句解析为(SELECT eid FROM event WHERE creator = $ fanPageID)时,FQL控制台将突出显示非可索引中的eid。

这是我的PHP

功能usersEventsPoints($ UID, $脸谱,$ fanpageID){

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

IN(SELECT EID FROM event_member WHERE 的uid = $ UID和rsvp_status = \ “出席\”)“;

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

     $eventsAttendingcount = 0; 

的foreach ($ eventsAttendance为$ eventsAttendanceFetch){

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

块引用

什么想法?

回答

1

得到与会者的名单这是一个非常简单的任务:

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

这将返回由具有$fanpageID ID的页面创建/拥有的所有事件ID,并且您是(me())中的成员,并且您的状态为attending

编辑
您正在循环返回的数组,以获得计数?!您可以简单地使用:

$eventsAttendingcount = count($eventsAttendance); 

还要确保您匹配的用户已授权您的应用程序并授予您正确的权限!

+0

非常感谢Barry的帮助,我最初使用图形api编写了一个脚本来交叉引用在事件和用户上发现的那些id。谢谢ifaour,你的方法完美无缺。我的偏见意味着这将是一个多查询FQL声明而不是单个声明。非常感谢你!。 – clazzy 2011-01-26 16:04:43

0

我不知道我明白了什么问题 - 我运行了你的FQL语句,它返回一个事件列表,然后返回你的RSVP状态?

另一方面,为什么不使用 events.get方法。你传入UserId,它会显示你的事件信息。您可以按RSVP状态过滤。

刚刚检查并且events.get方法正在被弃用。

您应该使用新的图形API,让你参加者为您的活动列表:

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

通过使用

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

+0

我试着拉使用与会者名单图表API和我没有得到在活动页面上可见的与会者的完整列表。 – 2011-08-26 18:50:30

0

如果你想获得Facebook的下一个10个事件记录的用户,事件都设置了attending那么你可以建立你这样的斯威夫特查询:

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 {}