我正在尝试通过Facebook的Multiquery FQL实现以下功能,获取我正在“参加”的所有粉丝页面活动的列表。
我有以下逻辑,并尝试使用下面的FQL语句实现类似的东西。
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; }
块引用
任何想法?
答案 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
您可以使用
获取与会者列表答案 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 {}