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

Checking for event-rsvp status and showing disabled/enabled RSVP-button

本文关键字:启用 rsvp 按钮 显示 事件 -rsvp 状态 检查      更新时间:2023-09-26

我仍然有点不确定如何在文档中找到这一点,但我想检查登录的用户是否已经回复了fb事件,并显示"我正在参加"按钮取决于…我已经获得了登录按钮连接和适当的权限(user_events和rsvp_event),只是不确定如何使用JS SDK进行此操作。

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

您可以使用Graph API来完成此操作。有两种情况可能会让您感兴趣:(1)对于某个事件,您希望列出用户是否参加;(2)对于某个用户,您希望列出他们参加的事件。

两种场景均需要设置user_events权限。

For (1): HTTP GET/EVENT_ID/attend。这将返回一个包含{id, name, rsvp_status}字段的对象数组。查找您感兴趣的用户ID,如果他们已经回复,那么rsvp_status字段将告诉您他们是否参加。

For (2): HTTP GET/USER_ID/events。这将返回具有多个字段的用户的所有事件,但也会像上面那样返回{id, name, rsvp_status}字段。这一次,查找您感兴趣的事件ID,然后rsvp_status字段将告诉您当前用户是否参加,没有参加,可能参加,或者没有RSVP(即rsvp_statusunsure)。

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

/[事件id]/邀请?用户= [user_id], access_token = [access_token]

如果用户已经RSVPed,它将返回一个带有rsvp_status的数据结构,包括该用户在技术上没有被"邀请"的公共事件。如果数据结构是空白的,那么他们根本没有回复。