Usando la API del gráfico de Facebook, ¿cómo puedo obtener el contenido de una página?
-
16-09-2020 - |
Pregunta
Por ejemplo, aquí hay una 'Página':
http://www.facebook.com/facebook
Esa página tiene un feed RSS (que me gustaría usar, idealmente), pero a) el navegador, Sniffs significa que necesito falsificar al agente de usuario de un script para buscarlo, y eso se siente realmente quebradizo B ) La calidad de los datos devueltos es realmente pobre.
¿Puedo usar la API del gráfico para buscar los mismos datos? Esta URL:
https://phap.facebook.com/facebook/feed
implica que puede , y JSON está bien para mí, aunque estoy buscando esto desde un script PHP en lugar de lado del cliente. Sin embargo, cuando intento esa URL para mi página real, obtengo lo 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úblicas", ¿es una configuración en la página en algún lugar? Si no, ¿cuál es la mejor manera de obtener la clave de acceso?
Solución
Si intento 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);
Usando 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;
}
Otros consejos
Actualización: A partir del 3 de junio de 2011, se requiere una aplicación válida o un usuario de usuario con todas las solicitudes de API.
Para más información: http://developers.facebook.com/blog/post/509/