Frage

Gibt es eine Möglichkeit mit der Facebook Graph API eine Liste aller Ereignisse, die von einem einzigen Profil erstellt zu bekommen? Unser Kunde erstellt eine Reihe von Veranstaltungen, und wir wollen eine Liste von allen ziehen. Ich sagte, dass sie nur sicher, dass sie sich treffen müssen, um den Fall zu sein, die Teilnahme, denn dann kann ich einfach die Liste der Ereignisse ziehen, dass das Profil besucht, aber ich bin gespannt, ob es eine anderer Weg. Vielleicht eine FQL Abfrage? Sie sehen eine Abfrage auf dem Primärschlüssel allerdings erfordern. Und was würde die FQL Abfrage aussehen, wenn das ist der Weg, es ??

zu tun
War es hilfreich?

Lösung

Ich habe im Grunde die FQL der @jhchen zur Verfügung gestellt. Doch es dauerte etwa 6 Stunden, um herauszufinden, wie man das FQL verwenden. So dass ich dachte, ich würde Sie ein funktionsfähiges Skript zur Verfügung stellen. Es ist nicht so perfekt, bitte aktualisieren, wenn Sie einen Fehler finden.

  1. Download Facebooks PHP SDK
  2. Fügen Sie YOUR_APP_ID
  3. Fügen Sie YOUR_APP_SECRET
  4. Fügen Sie PAGE_ID
  5. Änderungen an der FQL Anweisung, wie Sie für richtig halten. FQL Dokumentation

Anders als das Sie sollte gut sein zu gehen. Auch ich die Standard-Zeitzone zu America/Los_Angeles. Dies wird wahrscheinlich zu Problemen führen, für einige von euch, wenn jemand eine bessere Art und Weise hat die Zeitzonen zu behandeln bitte lassen Sie 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;
}

Andere Tipps

Sie können FQL verwenden. Nur mit dem Schöpfer als where-Klausel nicht funktioniert, weil der Schöpfer nicht Wende ist. Doch eine Abhilfe ist eine Wende where-Klausel und throw in dem Schöpfer zusätzlich aufzunehmen. Ex:

SELECT eid, name, pic, Schöpfer FROM Ereignis WHERE eid IN (SELECT eid FROM event_member WHERE uid = 12345) und Schöpfer = 12345

Das eine von ihnen: „Es gibt keinen guten Weg, um dorthin zu gelangen von hier“ Probleme. Sie können nicht FQL verwenden, da der Schöpfer Spalte nicht indiziert ist. Die beste Lösung, die ich im Moment denken kann, würde die Graph API werden unter Verwendung der Ereignisse Verbindung des Erstellers abzufragen, und alle Ereignisse herausgefiltert werden, dass sie für nicht der Schöpfer sind. Das wird nicht sehr effizient sein, da Sie Informationen über alle, die Ereignisse des Benutzers auch die, die das Herunterladen werden werden sie nicht schaffen. 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 alle Ereignisse herausgefiltert haben sie nicht selbst erstellt haben:

graph.facebook.com/?ids=[event_ids for the user's events]

Die Antwort von zechdc ist perfekt, aber ich brauche nur strtotime für die Startzeit zur Arbeit hinzuzufügen.

$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']));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top