2011-09-05 79 views
2

我仍然有點不確定如何在文檔中找到它,但我想檢查登錄用戶是否有RSVP'ed到一個fb事件或不,並顯示「我參加」按鈕取決於...我已經得到了登錄按鈕掛鉤和適當的權限(user_events和rsvp_event),只是不知道如何使用JS SDK去解決這個問題。檢查event-rsvp狀態並顯示禁用/啓用RSVP按鈕

回答

0

您可以查詢event_member FQL表,是這樣的:

FB.api(
    { 
     method: 'fql.query', 
     query: 'select rsvp_status from event_member where eid = "EVENT_ID" and uid=me()' 
    }, function(response) { 
     alert(response[0].rsvp_status); 
    } 
); 

將返回(警報)是這樣的:declined

+0

這沒有奏效,我得到一個錯誤,說「未捕獲的TypeError:無法讀取未定義的屬性'rsvp_status'」。粘貼在您的確切代碼中,除了我將EVENT_ID替換爲事件的實際eid ... – Steven

+0

好的,得到了​​這個工作,謝謝! – Steven

+0

@Steven,歡迎您! – ifaour

0

您可以使用圖形API來做到這一點。有兩種情況可能是有趣的:(1)對於一個事件,你想列出用戶是否參加,以及(2)對於一個用戶,你想列出他們參加的事件。您需要兩個方案的user_events權限。

對於(1):HTTP GET/EVENT_ID /參加。這將返回一個包含{id, name, rsvp_status}字段的對象數組。找到你感興趣的用戶ID,如果他們已經RSVP'd,那麼rsvp_status字段會告訴你他們是否參加。

對於(2):HTTP GET/USER_ID/events。這將返回具有多個字段的用戶的所有事件,但也會如上所述返回{id, name, rsvp_status}字段。這一次,查找您感興趣的事件ID,然後rsvp_status字段會告訴您當前用戶是否參加,不參加,可能出席,還是沒有RSVP'd(即rsvp_statusunsure)。

+0

真的建議使用在這種情況下通過FQL的圖表API?這意味着使用Graph API提取** ALL **數據比使用FQL提取單個記錄更有效率! – ifaour

+0

是的。這完全取決於你想要完成的事情。您可以更具體地使用FQL,但如果您正在處理多個事件或多個用戶,則Graph API很容易且一致。 –

+0

是有道理的,但對於這個特定的情況*我認爲*直到Facebook引入圖形的一些端點,例如'/ EVENT_ID/attending/USER_ID'或甚至更好'/ USER_ID/events/EVENT_ID,FQL纔會更好(更高效) 「我是對的嗎? :-) – ifaour

0

其實,有一個更簡單的方法來做到這一切。 FQL查詢的問題是,在您提交RSVP以顯示狀態後,會有15-30秒的延遲。但是這在沒有分頁的圖形API中起作用。在這種形式嘗試GET請求:

/[事件ID] /邀請的用戶= [USER_ID] & =的access_token [的access_token]

它會返回與rsvp_status的數據結構,如果用戶已經RSVPed根本不包括那些用戶沒有受到技術性「邀請」的公共活動。如果數據結構是空白的,那麼他們根本沒有RSVP。