Facebook FQL-用户参加的所有粉丝页面活动
-
24-10-2019 - |
题
我正在尝试通过Facebook的多Qualery FQL实现以下内容,获取我“参加”的所有粉丝页面事件的列表。
我有以下逻辑,并尝试实现与下面的FQL语句相似的东西。
- 获取由 /从粉丝页面创建的所有事件的列表(使用特定ID)
- 获取我所有(用户)参加的活动的列表
- 匹配eid的event_member fql表
- 如果它们匹配ID,并且RSVP_STATUS等于参加
- 显示结果。
FQL多
{“ query1”:“从事件中选择eid eid(从event_member中选择eid where uid = $ fanpageId)”,“ query2”:“选择rsvp_status in event_member wrev event_member with uid = $ uidand eid in(uidand eid in(select eid eid eid eid eid eid eid eid from#query1)” }
我知道该陈述是不正确的,但是我正在努力尝试这样做。我已经使用PHP代码中的一组非常混乱的foreach循环来实现了这一点。
使用单个多QUL FQL语句将更加有效。
任何建议都很棒。
编辑
我现在有问题的问题是IFAOUR的FQL语句在FQL查询控制台内工作(返回结果),但是当我运行以下内容时,返回空数组。
当我将语句解剖为(从creator = $ fanpageID的事件中选择EID)时,FQL控制台突出显示了不可索引中的EID。
这是我的PHP
函数用户eventspoints($ uid,$ facebook,$ fanpageid){
$events = "SELECT eid FROM event WHERE creator=$fanpageID AND eid
在(从event_member中选择eid,其中uid = $ uid and rsvp_status = 'ating “ ”)”;
$eventsAttendance = $facebook->api(array( 'method' => 'fql.query', 'query' =>$events, )); $eventsAttendingcount = 0;
foreach($ eventattendance as $ eventSattendanceFetch){
if($eventsAttendanceFetch['eid'] == true){ $eventsAttendingcount++; } } return $eventsAttendingcount; }
blockquote
有任何想法吗?
解决方案
这是一个非常简单的任务:
SELECT eid FROM event WHERE creator = $fanpageID AND eid IN (SELECT eid FROM event_member WHERE uid = me() AND rsvp_status = "attending")
这将返回由已创建/拥有的所有事件的ID $fanpageID
id,您是(您是)成员(me()
),您的身份是 attending
.
编辑:
您正在循环返回的数组只是为了获得计数吗?您可以简单地使用:
$eventsAttendingcount = count($eventsAttendance);
还要确保您要匹配的用户已授权您的应用程序并授予您正确的许可!
其他提示
我不确定我知道问题所在 - 我运行了您的FQL语句,然后返回事件列表,然后返回您的RSVP状态?
另一方面,为什么不使用 events.get 方法。您将传递用户ID,它将为您显示事件信息。您可以通过RSVP状态过滤。
刚刚检查和事件。GET方法正在弃用。
您应该使用新的图API,为您提供活动的参与者列表:
http://developers.facebook.com/docs/reference/api/event
您可以通过使用
如果您想获得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 {}