Язык
Контакты
GitHub
Поддержка
Регистрация
Войти
Логин: Пароль: Запомнить:
Пользователи
Последние сообщения
Ответить
1

Api facebook и Twitter API

Drunya

  • Man of God
  • Админ
  • 3527
  • Репутация:110 
  • Предупреждения: 0 
  • Регистрация:
    30 Ноя -0001
#1
Сейчас на работе очень много проектов, требующих интеграцию всевозможных 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
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
<?php include_once 'facebook/facebook.php';


$facebook = new Facebook(array(
  
'appId'  => '331915366780960',
  
'secret' => 'br055db30fg6bf113feece692a7b343f',
  
'cookie' => true,
));


$session $facebook->getUser();
$access $facebook->getAccessToken();

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: - Отключить.

Отредактировано автором 3 Мая 2012
Я горжусь тем, что создал бесплатную CMS - AtomX. И люблю нашу команду)

WeezyF

  • Джуниор
  • Юзер
  • 1
  • Репутация:0 
  • Предупреждения: 0 
  • Регистрация:
    7 Сен 2012
1
Сейчас online: 187. Зарегистрированных: 1. Гостей: 186.