Сейчас на работе очень много проектов, требующих интеграцию всевозможных API(Twitter, Facebook, Amazon, vk, flicker или как там его). Дело в том, что принципы работы со всеми этими АПИ схожи, но у каждого свои особенности и мне стоит только въехать в одно, тут же забывается другое. По сему я и решил начать серию заметок, напоминаний самому себе. Но и ценность для молодого поколения думаю будет. Когда материала будет достаточно, я оформлю все в нормальные статьи, но пока это просто заметки в виде форума))
Facebook API
У фейсбука есть выбор и это радует. Мы можем использовать как C# SDK, так и PHP SDK. Еще есть либа на JS, позволяющая все провернуть на стороне клиента, ну и само собой с плюшками в виде AJAX-а.
Но давайте по порядку. Для того, чтобы использовать возможности facebook API, нам надо зарегистрировать приложение тут. После чего мы получим заветные App id и Secret Key. Без них дальше ну никак.
В своих постах я буду опираться, в основном, на PHP, но возможны фрагменты и на JS. PHP SDK JS SDK
PHP SDK (facebook API)
Давайте попробуем решить какую нибудь задачу. На пример, получить 20 фотографий пользователя. Для этого нам надо проверить есть ли у нас права на это и если их нет, запросить разрешение у пользователя. Когда пользователь наградит наше приложение полномочиями, мы сможем получать его данные. Скажу сразу, что так называемый AccessToken, который подтверждает наши права, может быть как временный, так и постоянный(offline). Но об этом немного позже.
Вот пример кода, написанный "на коленке" для теста API
if (!strpos($access, '|')) { // Дело в том, что функция getAccessToken() возвращает токен, если он есть и разделенные "|" AppId и SecretKey, если токена нет. По этому я сделал пока такую проверку, но думаю, что можно придумать, то-то по лучше
$params = array(
'access_token' => $access,
);
$res = $facebook->api('/me/albums', 'GET', $params);
print_r($res);
} else {
$loginUrl = $facebook->getLoginUrl(array(
'scope' => 'offline_access,user_photos,publish_stream',
'redirect_uri' => 'http://domain.com/fbauth.php',
));
echo "<a href='{$loginUrl}'>Login</a>";
die();
}?>
facebook/facebook.php - адрес к PHP SDK. scope - список привилегий, которые мы хотим получить для данного пользователя(права на что-то). offline_access - говорит о том, что мы хотим получить перманентный токен для доступа к данным этого пользователя. Если не указать этот параметр, токен будет временный. redirect_uri - адрес куда будет перенаправлен пользователь после авторизации на фейсбук. '/me/albums' - запрос к API на получение альбомов текущего пользователя. Тут список всех возможных параметров.
Ну а тут можно тестировать запросы вместе с accessToken facebook explorer.
Добавлено2012.06.19 16-04
Оказывается, с некоторых пор offline_access запрен(deprecated) и предполагается, что мы должны постоянно обновлять наши токены, например по крону. Но, на момент написания этого поста, можно было зайти в настройки своего приложения, вкладка Advanced и выставить Remove offline_access permission: - Отключить.