5

Por ejemplo, he aquí una 'página':Usando la API Graph de Facebook, ¿cómo puedo obtener los contenidos de una página?

http://www.facebook.com/facebook

Esa página tiene un feed RSS (que me gustaría utilizar, a ser posible), pero: a) se navegador olfatea que significa que necesito falsa el usuario-agente de una secuencia de comandos para recuperarlo, y eso se siente realmente frágil b) la calidad de los datos devueltos es realmente pobre.

¿Puedo utilizar la API del gráfico para buscar los mismos datos? Esta URL:

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

implica que puede y JSON es bien para mí, aunque yo estoy trayendo esto desde un script PHP en lugar de en el cliente. Sin embargo, cuando intento que URL de mi página real, me sale el siguiente:

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

No entiendo por qué se requiere un token de acceso para mi página, mientras que otras páginas son 'más público' - es que una configuración en la página en alguna parte? De lo contrario, ¿cuál es la mejor manera de obtener la clave de acceso? Tenga en cuenta que esto es no una secuencia de comandos interactiva que solicita al propietario de la página que se autentique.

+0

¿Ha intentado conectarse con su usuario antes de ir a buscar su URL? – Doomsday

+0

Aquí es donde la terminología comienza a causar problemas ... Es una 'página' de la que estoy hablando aquí, pero cuando dices "tu usuario", ¿te refieres a un usuario que es administrador de la página? Todavía estoy tratando de entender el (enorme y complejo) modelo de datos de Facebook. –

Respuesta

5

Si trato de acceder a la URL a través de CURL, funciona bien para mí en PHP.

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

var_dump($facebookFeed); 

Con esta función 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

Parece que los datos son públicos y no se necesita autenticación. – eillarra

+0

Bueno, algunos datos parecen ser públicos https://graph.facebook.com/104783309570620/feed (esta es una página web) https://graph.facebook.com/141228739224419/feed (una tienda) y algunos no ... https://graph.facebook.com/104412186277028/feed (una página de banda de música) – eillarra

+0

Extraño: la URL correspondiente a nuestra 'página' NO se estaba comportando de esa manera, ¡pero ahora ES! O facebook ha realizado un cambio, o alguien ha cambiado nuestra 'página' de alguna manera para permitir esto. Tu respuesta es correcta, a pesar de que era lo que estaba intentando de todos modos :-) ¡así que ten un poco de recompensa! –

Cuestiones relacionadas