Gibt es einen Weg mit der Facebook Graph-API, um eine Liste aller Ereignisse zu erhalten, die von einem einzelnen Profil erstellt wurden? Unser Kunde erstellt eine Reihe von Ereignissen und wir möchten eine Liste von allen erstellen. Ich sagte, dass sie nur sicherstellen müssten, dass sie sich dazu entschlossen, an der Veranstaltung teilzunehmen, denn dann kann ich die Liste der Ereignisse, an denen profileId teilnimmt, leicht durchziehen, aber ich bin neugierig, ob es einen anderen Weg gibt. Vielleicht eine FQL-Abfrage? Sie sehen jedoch eine Abfrage des Primärschlüssels voraus. Und wie würde diese FQL-Abfrage aussehen, wenn das der richtige Weg ist?Graph-API - Ereignisse nach Besitzer/Ersteller abrufen
Antwort
ich im Grunde die FQL
verwendet, die bereitgestellt @jhchen. Es dauerte jedoch ungefähr 6 Stunden, bis ich herausgefunden hatte, wie ich das FQL
verwenden konnte. Also dachte ich, ich würde dir ein funktionierendes Skript zur Verfügung stellen. Es ist nicht perfekt, also bitte aktualisieren Sie es, wenn Sie einen Fehler finden.
- Herunterladen Facebooks PHP SDK
- hinzufügen
YOUR_APP_ID
- hinzufügen
YOUR_APP_SECRET
- hinzufügen
PAGE_ID
- Änderungen an der Erklärung
FQL
Make wie Sie sehen, passen. FQL Documentation
Ansonsten sollten Sie gut zu gehen. Außerdem habe ich die Standardzeitzone auf festgelegt. Dies wird wahrscheinlich für einige von euch Probleme bereiten. Wenn jemand einen besseren Umgang mit den Zeitzonen hat, lasst es mich wissen.
PHP-Code:
<?php
require_once("php/facebook.php");
date_default_timezone_set('America/Los_Angeles');
function display_events()
{
$app_id = 'YOUR_APP_ID';
$secret = 'YOUR_APP_SECRET';
$page_id = 'PAGE_ID';
$config = array();
$config['appId'] = $app_id;
$config['secret'] = $secret;
$config['fileUpload'] = false; // optional
$facebook = new Facebook($config);
$fql = 'SELECT
eid,
name,
pic_square,
creator,
start_time,
end_time
FROM event
WHERE eid IN
(SELECT eid
FROM event_member
WHERE uid='.$page_id.'
)
AND end_time >= ' . mktime() . '
ORDER BY start_time ASC
';
$ret_obj = $facebook->api(array(
'method' => 'fql.query',
'query' => $fql,
));
$html = '';
foreach($ret_obj as $key)
{
$facebook_url = 'https://www.facebook.com/event.php?eid=' . $key['eid'];
$start_time = date('M j, Y \a\t g:i A', $key['start_time']);
$end_time = date('M j, Y \a\t g:i A', $key['end_time']);
$html .= '
<div class="event">
<a href="'.$facebook_url.'">
<img src="'.$key['pic_square'].'" />
</a>
<span>
<a href="'.$facebook_url.'">
<h2>'.$key['name'].'</h2>
</a>
<p class="time">'.$start_time.'</p>
<p class="time">'.$end_time.'</p>
</span>
</div>
';
}
echo $html;
}
Dies ist einer dieser "es gibt keinen guten Weg, um von hier aus" Probleme zu bekommen. Sie können FQL nicht verwenden, da die Erstellerspalte nicht indiziert ist. Die beste Lösung, die ich mir im Moment vorstellen kann, ist die Verwendung der Graph-API, um die Ereignisverbindung des Erstellers abzufragen und alle Ereignisse herauszufiltern, für die sie nicht der Ersteller sind. Dies wird nicht sehr effizient sein, da Sie Informationen über alle Ereignisse des Benutzers herunterladen werden, auch die, die sie nicht erstellt haben. So würde ich experimentieren sie mit Einbruch in zwei Abfragen nach unten:
graph.facebook.com/[user_id]/events?fields=id,owner&limit=1000
und dann, wenn Sie gefiltert haben Sie alle Ereignisse, die sie nicht schaffen:
graph.facebook.com/?ids=[event_ids for the user's events]
Sie können FQL verwenden, mit denen eid in (wählen eid von event_member wo uid = <...>) Klausel, wie von jcmoney beschrieben. –
Sie können FQL verwenden. Die Verwendung des Erstellers als Ihre where-Klausel funktioniert nicht, da der Ersteller nicht indexierbar ist. Eine Problemumgehung besteht jedoch darin, eine indexierbare where-Klausel einzufügen und den Ersteller zusätzlich einzublenden. Ex:
SELECT eid, name, pic, Schöpfer FROM Ereignis WHERE eid IN (SELECT eid FROM event_member WHERE uid = 12345) und Schöpfer = 12345
Die Antwort von zechdc perfekt, aber ich brauche nur strtotime für die Startzeit hinzufügen zu arbeiten.
$start_time = date('M j, Y \a\t g:i A', strtotime($key['start_time']));
$end_time = date('M j, Y \a\t g:i A', strtotime($key['end_time']));
- 1. Google Kalender PHP Ereignisse nach spezifischem Datumsbereich abrufen
- 2. Benutzer-Feed mit Facebook-graphapi 2.x
- 3. CSS nach Ereignisse geklickt
- 4. EKEventStore Ereignisse abrufen gibt leere Liste zurück
- 5. Facebook graphApi oAuth - wie bekomme ich Zugangstoken?
- 6. Ereignisse aus einem eingebetteten SVG-Dokument abrufen
- 7. In welchem Format befindet sich Microsoft GraphApi ICalUid?
- 8. jquery Ereignisse nach laden Seite
- 9. bubble benutzerdefinierte Ereignisse nach unten
- 10. Aktualisieren von Benutzer mit Azure-Graphapi-Modul für Knoten js
- 11. Wie kann Feed mit GraphAPI in Facebook geteilt werden?
- 12. jQuery verhindern andere Ereignisse nach einem Klick
- 13. Aufruf Seite Methode nach Usercontrol Ereignisse endet
- 14. Ionic AngularJS Aufspaltung Ereignisse nach Datum
- 15. Context geöffnet Ereignis nicht nach abfeuert Ereignisse
- 16. Polymerfire - Erstellen von Daten nach einem Ereignisse
- 17. Google Kalender-API Ereignisse aus anderen Kalendern abrufen
- 18. Github API v3: Ereignisse von seit Datum bis Datum abrufen
- 19. Ungelesene Nachrichten nach Benutzer abrufen
- 20. Abrufen von Feeds nach Datum
- 21. Abrufen von Zellen nach Koordinaten
- 22. Element nach Titel abrufen jQuery
- 23. Abrufen von Attributwert nach Elternklassenname
- 24. NSTextField nach Tag-Nummer abrufen?
- 25. Google Blatt nach ID abrufen?
- 26. Übergeordnetes Widget nach Objektnamen abrufen
- 27. Abrufen eines Bereitstellungsskripts nach Name
- 28. .NET Google Kalender-API Ereignisse nach Datum sortieren
- 29. Warum paralleler/gleichzeitiger Zugriff auf graphAPI zur Beschleunigung des Datenabrufs (zB "Likes") manchmal fehlschlägt
- 30. Abrufen der neu hinzugefügten Kommentare von Facebook
Ich brauche das nicht mehr und habe keine Zeit, das zu testen, aber ich gehe davon aus, dass es funktioniert, wenn du 6 Stunden damit verbracht hast. Vielen Dank! – jwynveen
Es funktioniert (die fql - in Rubin versucht), danke! –
Kann das Zeitzonenfeld nicht vom Ereignis selbst verwendet werden? – Trefex