0

我正在尝试通过 Facebook 的 Multiquery FQL 实现以下目标,获取我正在“参加”的所有粉丝页面事件的列表。

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

  1. 获取由/从粉丝页面创建的所有事件的列表(使用特定 ID)
  2. 获取我参加的所有(用户)活动的列表
  3. 匹配来自 event_member FQL 表的 eid
  4. 如果他们匹配 ids,并且 rsvp_status 等于参加
  5. 显示结果。

FQL 多

{"query1":"SELECT eid FROM event WHERE eid IN (SELECT eid FROM event_member WHERE uid =$fanpageID)","query2":"SELECT rsvp_status FROM event_member WHERE uid = $uidAND eid IN (SELECT eid FROM #query1)" }

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

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

任何建议都会很棒。

编辑

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

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

这是我的PHP

函数 usersEventsPoints($uid, $facebook, $fanpageID){

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

IN (SELECT eid FROM event_member WHERE uid=$uid AND rsvp_status = \"attending\")";

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

        $eventsAttendingcount = 0;

foreach ($eventsAttendance 作为 $eventsAttendanceFetch) {

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

块引用

有任何想法吗?

4

3 回答 3

1

这是一个非常简单的任务:

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

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

编辑
您循环返回的数组只是为了获得计数?!你可以简单地使用:

$eventsAttendingcount = count($eventsAttendance);

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

于 2011-01-26T14:59:09.107 回答
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

于 2011-01-26T11:24:09.730 回答
0

如果您想获取 facebook 登录用户的下 10 个事件,其中事件设置为 a,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 {}
于 2017-06-02T02:57:23.353 回答