Javascript 检查事件rsvp状态并显示禁用/启用的rsvp按钮

Javascript 检查事件rsvp状态并显示禁用/启用的rsvp按钮,javascript,facebook,events,facebook-javascript-sdk,Javascript,Facebook,Events,Facebook Javascript Sdk,我仍然有点不确定如何在文档中找到这一点,但我想检查登录用户是否对fb事件进行了RSVP,并根据这一点显示“我正在参加”按钮。。。我已经连接好了登录按钮和适当的权限(用户事件和rsvp事件),只是不知道如何使用JS SDK执行此操作。您可以查询FQL表,例如: FB.api( { method: 'fql.query', query: 'select rsvp_status from event_member where eid = "EVENT_ID" a

我仍然有点不确定如何在文档中找到这一点,但我想检查登录用户是否对fb事件进行了RSVP,并根据这一点显示“我正在参加”按钮。。。我已经连接好了登录按钮和适当的权限(用户事件和rsvp事件),只是不知道如何使用JS SDK执行此操作。

您可以查询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);
    }
);
将返回(警报)类似于:
谢绝

您可以查询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);
    }
);

将返回(警报)类似于:
谢绝

您可以使用图形API来执行此操作。有两种可能会引起兴趣的场景:(1)对于事件,您希望列出用户是否正在参加;(2)对于用户,您希望列出他们正在参加的事件。两种方案都需要
user\u events
权限

对于(1):HTTP GET/EVENT_ID/attenting。这将返回一个包含
{id,name,rsvp_status}
字段的对象数组。查找您感兴趣的用户ID,如果他们有RSVP'd,则
RSVP_status
字段将告诉您他们是否参加


对于(2):HTTP GET/USER\u ID/events。这将返回用户的所有事件,包括多个字段,但也包括上面的
{id,name,rsvp_status}
字段。这一次,查找您感兴趣的事件ID,然后
rsvp\u status
字段将告诉您当前用户是否正在参加、未参加、可能参加或尚未参加(即
rsvp\u status
不确定)。

您可以使用图形API来完成此操作。有两种可能会引起兴趣的场景:(1)对于事件,您希望列出用户是否正在参加;(2)对于用户,您希望列出他们正在参加的事件。两种方案都需要
user\u events
权限

对于(1):HTTP GET/EVENT_ID/attenting。这将返回一个包含
{id,name,rsvp_status}
字段的对象数组。查找您感兴趣的用户ID,如果他们有RSVP'd,则
RSVP_status
字段将告诉您他们是否参加


对于(2):HTTP GET/USER\u ID/events。这将返回用户的所有事件,包括多个字段,但也包括上面的
{id,name,rsvp_status}
字段。这一次,查找您感兴趣的事件ID,然后
rsvp\u status
字段将告诉您当前用户是否正在参加、未参加、可能正在参加,或者没有rsvp'd(即
rsvp\u status
不确定)。

实际上,有一种更简单的方法可以做到这一切。FQL查询的问题是,在提交RSVP以显示状态后,会有15-30秒的延迟。但这在graph API中不需要分页。尝试此表单中的GET请求:

/[event id]/invested?user=[user\u id]&access\u token=[access\u token]


如果用户有rsvp,它将返回一个带有rsvp_状态的数据结构,包括该用户在技术上未被“邀请”的公共活动。如果数据结构为空,则表示他们根本没有rsvp。

实际上,有一种更简单的方法来完成所有这一切。FQL查询的问题是,在提交RSVP以显示状态后,会有15-30秒的延迟。但这在graph API中不需要分页。尝试此表单中的GET请求:

/[event id]/invested?user=[user\u id]&access\u token=[access\u token]


如果用户已经rsvp,它将返回一个带有rsvp_状态的数据结构,包括该用户在技术上未被“邀请”的公共事件。如果数据结构为空,则表示他们根本没有rsvp。

这不起作用,我收到一个错误,说“未捕获类型错误:无法读取未定义的属性‘rsvp_状态’”。粘贴到您的确切代码中,但我用事件的实际eid替换了事件ID…注意:此代码已弃用&无法与Graph API v2.0或更高版本一起使用-相反,它将生成以下错误消息:
REST API已弃用于v2.1或更高版本
,但不起作用,我收到一个错误消息“未捕获的TypeError:无法读取未定义的属性'rsvp_status'“。粘贴在您的确切代码中,但我用事件的实际eid替换了事件的ID…注意:此代码已弃用,且不适用于Graph API v2.0或更高版本-相反,它将生成以下错误消息:
REST API已弃用于v2.1及更高版本
在这种情况下,是否真的建议使用Graph API over FQL?”?这意味着使用Graph API提取所有数据比使用FQL提取单个记录更有效!!符合事实的这完全取决于你想要完成什么。您可以更具体地使用FQL,但如果您处理多个事件或多个用户,则Graph API是简单且一致的。这是有道理的,但对于这种特定情况,我认为FQL更好(而且更有效)直到Facebook在图表中引入了一些端点,比如:
/EVENT\u ID/attenting/USER\u ID
或者更好的
/USER\u ID/events/EVENT\u ID
我正确吗?:-)我不能确定地说,因为我不知道您尝试做什么的总范围,但是您的方法对我来说听起来很合理。在这种情况下,是否真的建议在FQL上使用Graph API?这意味着使用Graph API提取所有数据比使用FQL提取单个记录更有效!!符合事实的这完全取决于你想要完成什么。您可以更具体地使用FQL,但如果您处理多个事件或多个用户,则Graph API是简单且一致的。这是有道理的,但对于这种特定情况,我认为FQL更好(而且更有效)直到Facebook在图表中引入了一些端点,比如:
/EVENT\u ID/attenting/USER\u ID
或者更好的
/USER\u ID/events/EVENT\u ID
我正确吗?:-)我不能肯定地说,因为我不知道全部情况