Usando o Facebook Graph API, como posso obter o conteúdo de uma página?
-
16-09-2020 - |
Pergunta
Por exemplo, aqui está uma 'página':
http://www.facebook.com/facebook
Essa página tem um feed RSS (que eu gostaria de usar, de preferência), mas uma) é o navegador faz sentido eu preciso falso agente do usuário a partir de um script para buscá-la - e que se sente muito frágil b) a qualidade dos dados retornados é muito ruim.
Posso usar a api gráfica para obter os mesmos dados?Esta URL:
https://graph.facebook.com/facebook/feed
implica que eu pode, e json é bom para mim, embora eu estou buscando isso a partir de um script PHP em vez de no lado do cliente.No entanto, quando eu tentar que a URL da minha página, eu recebo a seguinte:
{
"error": {
"type": "OAuthAccessTokenException",
"message": "An access token is required to request this resource."
}
}
Eu não entendo por que um token de acesso é necessário para a minha página, enquanto as outras páginas são "mais público" - é que uma configuração na página em algum lugar?Se não, qual é a melhor maneira de obter a chave de acesso - note-se que esta é não um script interativo solicitando que o proprietário da página para autenticar.
Solução
Se eu tentar acessar a URL via CURL, OK funciona para mim em PHP.
$curlResponse = http('https://graph.facebook.com/facebook/feed');
$facebookFeed = json_decode($curlResponse['data'], true);
var_dump($facebookFeed);
Usando esta função em 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;
}
Outras dicas
Atualização: Em junho 3, 2011, válido aplicativo ou usuário access_token é necessário com todos os pedidos de API.
Para mais informações: http://developers.facebook.com/blog/post/509/