Используя API Graph Facebook, как я могу получить содержимое страницы? - PullRequest
5 голосов
/ 16 июля 2010

Например, вот «страница»:

http://www.facebook.com/facebook

На этой странице есть канал RSS (который я хотел бы использовать, в идеале), но a) это браузер-sniffs означает, что мне нужно подделать пользовательский агент из скрипта для его извлечения - и это кажется очень хрупким б) качество возвращаемых данных действительно низкое.

Могу ли я использовать API api для выборкиодни и те же данные?Этот URL:

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

подразумевает, что я могу , и мне подходит json, хотя я выбираю это из сценария PHP, а не из клиента.боковая сторона.Однако, когда я пробую этот URL для моей реальной страницы, я получаю следующее:

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

Я не понимаю, почему токен доступа требуется для моей страницы, в то время как другие страницы «более общедоступны» -это конфигурация на странице где-то?Если нет, то как лучше всего получить ключ доступа - обратите внимание, что это , а не интерактивный скрипт, запрашивающий у владельца страницы аутентификацию.

Ответы [ 2 ]

5 голосов
/ 22 июля 2010

Если я пытаюсь получить доступ к 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;
}
2 голосов
/ 06 июня 2011

Обновление: По состоянию на 3 июня 2011 г. для всех запросов API требуется действительное приложение или user_token доступа.

Для получения дополнительной информации: http://developers.facebook.com/blog/post/509/

...