Überprüfen Sie den Status eines Ereignis-RSVP und Anzeigen von deaktiviertem/aktiviertem RSVP-Button
-
26-10-2019 - |
Frage
Ich bin immer noch ein bisschen unsicher, wie ich das in der Dokumentation finden würde, aber ich möchte überprüfen, ob der protokollierte Benutzer einen FB-Event hat oder nicht, und zeigen, dass "ich teilnehme". Button abhängig davon ... Ich habe bereits die Anmeldetaste angeschlossen und die richtigen Berechtigungen (User_Events und RSVP_Event), nur nicht sicher, wie man das mit dem JS SDK vorstellt.
Lösung
Sie können das abfragen event_member
FQL -Tabelle, so etwas wie:
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);
}
);
Würde zurückkehren (alarmieren), so etwas wie: declined
Andere Tipps
Zu diesem Zweck können Sie die Graph -API verwenden. Es gibt zwei Szenarien, die möglicherweise von Interesse sein können: (1) Für ein Ereignis möchten Sie auflisten, wenn der Benutzer teilnimmt, und (2) für einen Benutzer möchten Sie die Veranstaltung auflisten, die er teilnimmt. Du brauchst das user_events
Erlaubnis für beide Szenarien.
Für (1): http get /event_id /sehne. Dadurch wird eine Reihe von Objekten mit zurückgegeben {id, name, rsvp_status}
Felder. Suchen Sie nach der Benutzer -ID, an der Sie interessiert sind, und wenn sie RSVP'd haben, dann die rsvp_status
Field wird Ihnen sagen, ob sie teilnehmen.
Für (2): http get /user_id /events. Dadurch wird alle Ereignisse für den Benutzer mit mehreren Feldern zurückgegeben, aber auch {id, name, rsvp_status}
Felder wie oben. Suchen Sie diesmal nach der Event -ID, an der Sie interessiert sind, und dann die rsvp_status
Das Feld sagt Ihnen, ob der aktuelle Benutzer anwesend ist, nicht anwesend ist, vielleicht anwesend ist, oder hat RSVP nicht anwesend (dh nicht rsvp_status
ist unsure
).
Tatsächlich gibt es eine einfachere Möglichkeit, all dies zu tun. Das Problem bei der FQL-Abfrage besteht darin, dass eine Verzögerung von 15 bis 30 Sekunden nach dem Einreichen des RSVP für den Status zum Antreten des Status besteht. Dies funktioniert jedoch in der Graph -API ohne Pagination. Versuchen Sie eine Get -Anfrage in diesem Formular:
/[Ereignis -ID]/eingeladen? User = [user_id] & access_token = [access_token
Es wird eine Datenstruktur mit dem RSVP_Status zurückgeben, wenn der Benutzer überhaupt RSV eingeschlagen hat, einschließlich für öffentliche Ereignisse, bei denen dieser Benutzer technisch nicht "eingeladen" war. Wenn die Datenstruktur leer ist, haben sie überhaupt nicht rsviert.