Использование API Facebook Graph API, как я могу получить содержимое страницы?
-
16-09-2020 - |
Вопрос
Например, вот «страница»:
http://www.facebook.com/facebook
Эта страница имеет RSS-канал (которую я хотел бы использовать, в идеале), но а) это браузер-нюпки, означающие, мне нужно подделать пользовательский агент из скрипта, чтобы получить его - и что чувствует себя действительно хрупким ) качество возвращаемых данных действительно плохо.
Могу ли я использовать графический API для получения одинаковых данных? Этот URL:
https://graph.facebook.com/facebook/feed
подразумевает, что я CAN , и JSON в порядке для меня, хотя я получаю это из сценария PHP, а не на стороне клиента. Однако, когда я попробую это URL для моей реальной страницы, я получаю следующее:
{
"error": {
"type": "OAuthAccessTokenException",
"message": "An access token is required to request this resource."
}
}
.
Я не понимаю, почему для моей страницы требуется токен доступа, в то время как другие страницы «все публики» - это то, что конфигурация на странице где-то? Если нет, какой лучший способ получить ключ доступа - обратите внимание, что это не интерактивный сценарий, спрашивающий владелец страницы для аутентификации.
Решение
Если я попытаюсь получить доступ к URL через Curl, он работает нормально для меня в PHP.
$curlResponse = http('https://graph.facebook.com/facebook/feed');
$facebookFeed = json_decode($curlResponse['data'], true);
var_dump($facebookFeed);
.
Использование этой функции 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;
}
. Другие советы
Для получения дополнительной информации: http://developers.facebook.com/blog/post/509/