2011-09-05 64 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。