Получить стену с общедоступной страницы Facebook с помощью Graph API - действительно ли это сложно? - PullRequest
13 голосов
/ 18 марта 2012

Я начал с чтения Отображение сообщений Facebook для пользователей, не являющихся пользователями Facebook , что имеет некоторое значение, но я не могу поверить, что это так сложно - получить общедоступный канал из Facebook.

Страница, с которой я хочу получить фид, общедоступна, вам не нужно входить в нее, чтобы попасть на нее.

Прав ли я, предполагая, что мне нужен access_token, чтобы получить эту информацию, пытаясь получить доступ к URL безприводит к ошибке OAuth.

Таким образом, поток должен быть таким (массивно, чрезмерно сложным):

  1. Аутентификация с использованием пользователя (что, если пользователь не находится на Facebook?)
  2. Некоторая сложная ерунда OAuth - просто чтобы прочитать канал, я даже не хочу, чтобы кнопка «Мне нравится» или функция публикации на стене
  3. Получите канал, используя PHP-запрос на правильный URL сaccess_token пользователя
  4. Визуализация канала

Если пользователь не в Facebook, что вы делаете, используйте универсальное приложение для получения канала?

  1. Жесткий код запроса на авторизациюна Facebook с использованием идентификатора и секрета моего универсального приложения
  2. Некоторая сложная глупость OAuth
  3. Получите фид с помощью PHP-запроса на правильный URL-адрес с помощью access_token приложения
  4. Отобразите фид
  5. О нет, срок аутентификации истек, повторите авторизацию и перехватите этот новый access_token для использования в будущих запросах.

Это кажется действительно сложным без причины, кроме того, что Facebook хочет знатьВСЕ, что происходит, было бы проще сделать cURL и вычистить контент из общедоступного URL с помощью XPath.

Любая помощь по этому вопросу будет отличной.

Спасибо, Джейк

РЕДАКТИРОВАТЬ

Правка, показывающая, что это не точный дубликат.

У меня была эта работа с access_token на месте, но теперь это не удается, токен истек, и я больше не могу использовать его для получения информации из публичной стены.

Я пытался продлить срок действия этого токена, используя методы, упомянутые в других публикациях, но этонеработа и срок действия не был продлен - мы находимся здесь с недействительным токеном и не продвигаемся дальше.

Кажется, что ручной процесс подтверждения запроса OAuth означает, что невозможно программно получитьлента общедоступной страницы.

Ответы [ 3 ]

4 голосов
/ 08 октября 2014

Два года спустя вы можете программно сделать это с помощью приложения Facebook (пример с использованием PHP и Slim): https://developers.facebook.com/apps/

$base_api="https://graph.facebook.com/";
$client_id="XXXXXX";
$app_secret="XXXXXX";

//get a profile feed (can be from a page, user, event, group)
$app->get('/feed/:profileid/since/:start_date', function ($profile_id,$start_date) {

    $start_time=date('m/d/Y h:i:s',$start_date);

    $request = new FacebookRequest(
      getSession(),
      'GET',
      '/'.$profile_id.'/feed?since='.$start_time
    );

    $response = $request->execute();
    $graphObject = $response->getGraphObject();

    //do something with $graphObject

});


function getSession(){
    $session = new FacebookSession(getAccessToken());
    return $session;
}


function getAccessToken(){
    global $base_api, $client_id, $app_secret;
    $url=$base_api."oauth/access_token?client_id=".$client_id."&client_secret=".$app_secret."&grant_type=client_credentials";
    $str = file_get_contents($url);
    $token = str_replace ( "access_token=" , "" , $str );
    return $token;
}
0 голосов
/ 28 октября 2015

Facebook изменил способ получения канала общедоступной страницы Facebook с момента публикации других ответов.

Проверьте мой ответ / вопрос . Это не PHP, но он обеспечивает URLs и необходимый вам процесс.

0 голосов
/ 25 июля 2012

У меня есть некоторые успехи с чтением в прямом канале без токенов и т. Д. (с использованием сороки, простого шпиона или траектории запроса или подобного).

http://www.facebook.com/feeds/page.php?format=rss20&id=........ http://www.facebook.com/feeds/page.php?format=atom10&id=........

найдено на: http://ahrengot.com/tutorials/facebook-rss-feed/

...