5

Per esempio, ecco una 'pagina':Utilizzando l'API grafico Facebook, come posso ottenere il contenuto di una pagina?

http://www.facebook.com/facebook

Quella pagina ha un feed RSS (che mi piacerebbe usare, idealmente), ma a) del browser-annusa il che significa che ho bisogno di falso lo user-agent da uno script per scaricarlo - e che si sente davvero fragile b) la qualità dei dati restituiti è davvero scarsa.

Posso utilizzare il grafico api per recuperare gli stessi dati? Questo URL:

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

implica che io posso , e JSON è bene per me, anche se sto richiamando questa da uno script PHP, piuttosto che sul lato client. Tuttavia, quando provo quel URL per la mia pagina attuale, ottengo il seguente:

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

non capisco il motivo per cui è richiesto un token di accesso per la mia pagina, mentre altre pagine sono 'più pubblico' - è che una configurazione sulla pagina da qualche parte? In caso contrario, qual è il modo migliore per ottenere la chiave di accesso: si noti che questo è non uno script interattivo che chiede al proprietario della pagina di autenticarsi.

+0

Hai provato a connettersi con il proprio utente prima di andare a prendere l'URL? – Doomsday

+0

Qui inizia la terminologia che causa problemi ... È una "pagina" di cui sto parlando, ma quando si dice "utente", si intende un utente che è un amministratore della pagina? Sto ancora cercando di capire come funziona (enorme e complesso) il modello di dati di Facebook. –

risposta

5

Se provo ad accedere all'URL tramite CURL, funziona correttamente per me in PHP.

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

var_dump($facebookFeed); 

Usando questa funzione PHP:

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

Quindi sembra che i dati siano pubblici e non sia necessaria alcuna autenticazione. – eillarra

+0

Bene, alcuni dati sembrano essere pubblici https://graph.facebook.com/104783309570620/feed (questa è una pagina del sito web) https://graph.facebook.com/141228739224419/feed (un negozio) e alcuni no ... https://graph.facebook.com/104412186277028/feed (una pagina della banda musicale) – eillarra

+0

Strano - l'URL corrispondente per la nostra "pagina" NON si comportava in questo modo, ma È ora! O Facebook ha apportato una modifica, o qualcuno ha cambiato la nostra 'pagina' in qualche modo per consentire questo. La tua risposta è corretta, anche se era quello che stavo provando comunque :-), quindi abbi una buona taglia! –