5

Zum Beispiel, hier ist eine ‚Seite‘:Wie kann ich mithilfe der Facebook Graph-API den Inhalt einer Seite abrufen?

http://www.facebook.com/facebook

Diese Seite einen RSS-Feed hat (was ich, am besten verwenden möchten), aber a) es Browser-schnüffelt Bedeutung ich zu fälschen müssen der Benutzer-Agent von einem Skript, um es zu holen - und das fühlt sich wirklich spröde b) die Qualität der zurückgegebenen Daten ist wirklich schlecht.

Kann ich die Grafik api verwenden, um die gleichen Daten zu holen? Diese URL:

https://graph.facebook.com/facebook/feed

bedeutet, dass ich kann und json für mich in Ordnung, obwohl ich dies aus einem PHP-Skript bin holen anstatt clientseitige. Allerdings, wenn ich die URL für meine aktuelle Seite versuchen, erhalte ich folgende:

{ 
    "error": { 
     "type": "OAuthAccessTokenException", 
     "message": "An access token is required to request this resource." 
    } 
} 

Ich verstehe nicht, warum ein Zugriffstoken für meine Seite erforderlich ist, während andere Seiten ‚mehr Öffentlichkeit‘ - ist, dass eine Konfiguration auf der Seite irgendwo? Wenn nicht, was ist der beste Weg, um den Zugriffsschlüssel zu erhalten - beachten Sie, dass dies nicht ist ein interaktives Skript fragt den Seiteninhaber zu authentifizieren.

+0

Haben Sie versucht, mit dem Benutzer zu verbinden, bevor Sie Ihre URL zu holen? – Doomsday

+0

Hier beginnt die Terminologie Probleme zu verursachen ... Es ist eine "Seite", von der ich hier spreche, aber wenn du "dein Benutzer" sagst, meinst du einen Benutzer, der ein Administrator der Seite ist? Ich versuche immer noch, das (riesige und komplexe) Facebook-Datenmodell zu verstehen. –

Antwort

5

Wenn ich versuche, über CURL auf die URL zuzugreifen, funktioniert es OK für mich in PHP.

$curlResponse = http('https://graph.facebook.com/facebook/feed'); 
$facebookFeed = json_decode($curlResponse['data'], true); 

var_dump($facebookFeed); 

Mit dieser PHP-Funktion:

function http($url) { 
    $timeout = 30; 
    $connectTimeout = 30; 
    $sslVerifyPeer = false; 

    $response = array(); 
    $ci  = curl_init(); 

    /* Curl settings */ 
    curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, $connectTimeout); 
    curl_setopt($ci, CURLOPT_TIMEOUT, $timeout); 
    curl_setopt($ci, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ci, CURLOPT_HTTPHEADER, array('Expect:')); 
    curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, $sslVerifyPeer);  
    curl_setopt($ci, CURLOPT_URL, $url); 

    $response['http_code'] = curl_getinfo($ci, CURLINFO_HTTP_CODE); 
    $response['api_call'] = $url; 
    $response['data']  = curl_exec($ci); 

    curl_close ($ci); 

    return $response; 
} 
+0

So scheint es, dass die Daten öffentlich sind und keine Authentifizierung erforderlich ist. – eillarra

+0

Nun, einige Daten scheinen öffentlich zu sein https://graph.facebook.com/104783309570620/feed (das ist eine Website-Seite) https://graph.facebook.com/141228739224419/feed (ein Geschäft) und einige nicht ... https://graph.facebook.com/104412186277028/feed (eine Musikbandseite) – eillarra

+0

Seltsam - die entsprechende URL für unsere "Seite" verhielt sich NICHT so, sondern IST jetzt! Entweder haben Facebook eine Änderung vorgenommen, oder jemand hat unsere "Seite" in irgendeiner Weise geändert, um dies zu ermöglichen. Deine Antwort ist korrekt, obwohl es das war, was ich überhaupt versucht habe :-), also hab ein bisschen Kopfgeld! –