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