Facebook FQL - 用户正在参加的所有粉丝页活动

时间:2011-01-26 11:10:08

标签: facebook facebook-graph-api facebook-fql facebook-php-sdk

我正在尝试通过Facebook的Multiquery FQL实现以下功能,获取我正在“参加”的所有粉丝页面活动的列表。

我有以下逻辑,并尝试使用下面的FQL语句实现类似的东西。

  1. 获取由粉丝页面创建的所有事件的列表(使用特定ID)
  2. 获取参加
  3. 的所有(用户)活动的列表
  4. 在event_member FQL表
  5. 中匹配eid
  6. 如果匹配ID,则rsvp_status等于参加
  7. 显示结果。
  8. FQL Multi

      

    {“query1”:“SELECT eid FROM event WHERE   eid IN(SELECT eid FROM event_member   在哪里   = $ fanpageID)“,”query2“:”SELECT rsvp_status FROM event_member WHERE   uid = $ uidAND eid IN   (从#query1中选择eid)“}

    我知道这个陈述不正确,但我正在努力尝试这样做。我在PHP代码中使用一组非常混乱的foreach循环通过Graph API实现了这一点。

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

    任何建议都会很棒。

    修改

    我现在遇到的问题是ifaour的FQL语句在FQL查询控制台中运行(返回结果),但是当我运行以下命令时,返回空数组。

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

    这是我的PHP

      

    function usersEventsPoints($ uid,   $ facebook,$ 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 as $ eventsAttendanceFetch){

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

    块引用

      

    任何想法?

3 个答案:

答案 0 :(得分: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并且您是(me())成员并且状态为attending的网页创建/拥有的所有事件ID。

修改
你正在循环返回的数组只是为了获得计数?!你可以简单地使用:

$eventsAttendingcount = count($eventsAttendance);

还要确保您匹配的用户已授权您的申请并授予您正确的权限!

答案 1 :(得分:0)

我不确定我是否理解问题所在 - 我运行了你的FQL语句并返回事件列表然后返回你的RSVP状态?

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

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

您应该使用新的Graph API,它会为您提供活动的与会者列表:

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

您可以使用

获取与会者列表

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

答案 2 :(得分:0)

如果您想获取Facebook登录用户的下一个10个事件,其中事件设置为attending,那么您可以构建您的Swift查询:

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