Обратите внимание, что новости можно получать по RSS.
X
-

Информационные технологии, LiveJournal cr_it - архив

20 июня 2012, 03:30 (2134 дня назад, №8822)Как вытащить из Facebook'a собственный timeline
Давно хотел разобраться с экспортом новостной ленты (timeline) из Facebook'a на собственный сайт. Во-первых, у них очень неплохо сделано автоматическое анонсирование публикуемых ссылок - картинка создаётся, кусок текста качественно (по сравнению с G+ или VK) выбирается. Во-вторых, всё что есть в таймлайне (и на личной странице и на других) доступно через API.

Схема действий следующая:

Логинимся в Facebook собой, создаём на новое приложение. Никаких сложностей нет, главное чтобы оно создалось и вы смогли записать его appId и App Secret.

Данные из фейсбука получаем через Graph API - там можно получить много чего, нас интересует конкретно таймлайн, так что запрос будет выглядеть как "/yourname/feed", где yourname  - ваше имя или название страницы (например, "vasyapupkin" или "chaosconstructions").

Всё было бы совсем элементарно, если бы не авторизация. Документация фейсбука известна своей понятностью, полнотой и частыми обновлениями, так что я лучше опишу всё своими словами :)

Авторизация потребуется в любом случае, кроме самых простейших, вида: https://graph.facebook.com/vasyapupkin (получаете только общие сведения о пользователе).

Чтобы получить feed, необходим access token. Они бывают разные. Токены приложений (состоят из комбинации appid и secret) вам не помогут. Нужен токен пользователя, которые бывают как минимум двух типов - короткоживущие и долгоживущие. Первые живут 2 часа, так что это не вариант (теоретически можно продлевать, но если пропустите - всё :). Вторые живут 60 дней - они-то нам и нужны.

Сразу скажу - нет способа получить "вечный токен". Раньше был (т.н. offline access), но недавно они решили, что это слишком жирно для разработчиков - пусть народ посуетится. Разработчики забегали, как тараканы на сковородке, т.к. пропала возможность для серверных частей стабильно получать по крону данные из фейсбука. В итоге, после изучения вопроса наиболее вменяемый вариант - получить 60 дневный токен и периодически его продлевать. Получаем его вводя в браузере url:

https://graph.facebook.com/oauth/authorize?type=user_agent&client_id=AppId&redirect_uri=http://www.yoursite.ru&scope=export_stream

(scope - это права, которые вам нужны. export_stream как раз для таймлайна, www.yoursite.ru - ваш сайт)

В ответ вам вылезет попап, где вы должны согласиться с предоставлением доступа к приложению.

После подтверждения попап закроется и произойдет редирект на:

http://www.yoursite.ru/#access_token=1A2DTFRmUFbUBAICTKOYdZCHbzpUKAZAtOJZA2QAXekjBAlSDMr7OaGuPAFxEnJBY2KDtRzQlyEATnBoZAbhjt9BOwjA24q2NptLkGVwGJgZDZD&expires_in=5142784&code=AQBcqzyrrYjDkMWJC83Igeg8owO4LHwscbtF8GSFGMq63XC0thKam0cyjsH20ea_dZC45IpH1xdG2179CpXBGfDBbTlX8Xm0smEfUCU15tkV5fx5_UkFSfR4T2sJZ2kTy-oACdTmjZxe97OHtVza5aAEk61rECdpSSgr1x5NJdxCVXX99bO71xnq68S5WhCZD13

Это и будет ваш токен. Его вы прописываете в код, который будет запускаться для выборки данных из фейсбука:

...

require 'facebook.php'; // лежит здесь: https://github.com/facebook/facebook-php-sdk

$facebook = new Facebook(array(
  'appId'  => '123457576954321',
  'secret' => 'abcdef0d45da5a52f08abfd90fedccba',
));

$access_token = '1A2DTFRmUFbUBAICTKOYdZCHbzpUKAZ5tOJZA2QAXekjBAlSDMr7OaGuPAFxEnJBY2KDtRzQlyEATnBoZAbhjt9BOwjA24q2NptLkGVwGJgZD13';

$facebook->setAccessToken($access_token);

$data = $facebook->api('/vasyapupkin/feed');  // yourname - ваше имя или название страницы (из url)

echo('<pre>');
print_r($data);  // возвращается json с данными ленты, формат довольно очевидный
echo('</pre>');
...

Что делать через 60 дней? Это хороший вопрос.

На stackoverflow топиков на эту тему бесконечность - пример.

Насколько я понял, продлить автоматически его никак нельзя. Только вручную, как описано выше. Если узнаете другой способ, поделитесь.

Экспериментировать можно также в Facebook API Explorer (учтите, что кнопка Get Access Token даёт двухчасовой токен)

UPDATE:

Где-то ближе к концу 2012 года Facebook в очередной раз изменил правила игры (в документации это не отражено - и правда, зачем? :)

Смысл в том, что теперь там, где выше я пишу "это и будет ваш токен" - он теперь внезапно не 60 дневный, а обычный 2 часовой. На Stackoverflow народ придумывает всякие версии как с этим жить (легко гуглится по недокументированной setExtendedAccessToken), сходу можно предложить простой ручной вариант. Берется двухчасовой токен и подсовывается в следующий url:

https://graph.facebook.com/oauth/access_token?client_id=AppId&client_secret=AppSecret&grant_type=fb_exchange_token&%20fb_exchange_token=_2_hours_token_

В ответ получаем строчку с уже долгоживущим токеном вида:

access_token=_60_days_token_&expires=_expire_time_

Радуемся (не очень долго, я прогнозирую :)


Опубликовано: Пётр Соболев

Случайная заметка

6193 дня назад, 15:2510 мая 2001 Adok/Hugi сообщает, что вышел 22-й номер журнала Hugi Russian Edition: Hugi is the leading free international electronical magazine (diskmag) in the PC Scene. On May 3rd, the Russian Edition of Hugi 22 was released. "Hugi #22 - Russian Edition has been released. Thanks to the great work of iliks, Aquila, slash, Virtual, most of the articles from Hugi 22 were translated to the Russian language. The remaining ones are included in English. I hope the Russian-speaking people among you will enjoy it! BTW: Feedback on this edition, as well as on the international ...далее

Избранное

354 дня назад, 01:575 мая 2017 Часть 1: От четырёх до восьми Я люблю читать воспоминания людей, заставших первые шаги вычислительной техники в их стране. В них всегда есть какая-то романтика, причём какого она рода — сильно зависит от того, с каких компьютеров люди начали. Обычно это определяется обстоятельствами — местом работы, учёбы, а иногда и вовсе — ...далее

1859 дней назад, 00:5922 марта 2013 Прочёл тут книжку - iWoz ( ссылка ) , 2006 года. Это автобиография Стива Возняка. Похоже, что на русский её не переводили (в отличие от книг про Стива Джобса). В этой парочке, как известно, Возняк был инженером (собственно, и спроектировавшим Apple I и II), а Джобс - скорее предпринимателем. В книге есть довольно интересные ...далее

963 дня назад, 23:404 сентября 2015 Небольшое видео про CC'2015 ( версия без фоновой музыки здесь: ссылка )

1331 день назад, 03:121 сентября 2014 Мой семинар на Chaos Constructions'2014 (слайды можно в виде PDF скачать здесь: ссылка ) и несколько интервью с разными людьми: Вячеслав Славинский (svo) о Vectrex: ссылка Вячеслав Славинский (svo) о 3D Imager для Vectrex: ссылка Вячеслав Славинский (svo) о световом пере для Vectrex: ссылка ...далее