Основная проблема тех, кто начинает работать с Facebook SDK, это наличие предыдущего опыта работы с другими сторонними API и SDK. Просто забудьте все, что знали раньше :). Внутренний мир разработчиков facebook богат и многообразен, потому простых решений вы тут не увидите.
Т.к. очередная версия SDK устаревает в течении 2 лет (точнее гарантированно работает не более 2-х лет с момента релиза), то лучше читать гайд от самого facebook.
Он вот тут — https://developers.facebook.com/docs/php/gettingstarted
Текущая версия — v2.8. Раз вы пришли сюда, то, видимо, стиль документации facebook сидит у вас где то в печенках :).
Модель работы в общих чертах
Чтобы что то получить/передать через API, нужно, чтобы вы представились Facebook. В конечном счете, всё сводится к тому, что вы должны получить «маркер доступа». Это такой временный ключ.
Существуют разные типы маркеров доступа (да, всё не просто):
https://developers.facebook.com/docs/facebook-login/access-tokens
Они отличаются во своим возможностям. Типичный подход — использование маркера доступа приложения (МДП).
Но чтобы получить МДП, нужно сначала зарегистрировать приложение.
На момент написания статьи актуальная версия PHP SKD 5.4. Скачать можно здесь — https://github.com/facebook/facebook-php-sdk-v4/. Если выйдет свежая версия, ориентируетесь на месте. После этого можно приступать к написанию кода.
Далее все этапы подробнее.
Регистрация приложения на Facebook
Не так сложно как звучит. Фактически, мы создаём учетную запись, через которую будет производится доступ к API.
Переходите на https://developers.facebook.com/apps/, жмите по кнопе — «добавить приложение». Заполняйте форму (она выше на скриншоте), и вы попадете в карточку вашего только что созданного приложения.
Здесь нам понадобится значение двух полей: идентификатор приложения (app_id) и ключ-секрет (app secret).
Установка PHP SDK Facebook.
Самая свежая версия работает с PHP v5.4. В архиве куча всякого хлама, нас интересует только библиотеки в папке /src/Facebook/.
Создадим для них, к примеру, папку /fb-sdk в корне вашего сайта. Копируем :)
А PHP добавим следующий код:
1 2 3 4 5 6 7 8 9 10 |
//подключили SDK require_once $_SERVER['DOCUMENT_ROOT'] . '/fb-sdk/autoload.php'; //если не запущены ранее, запускаем сессии session_start(); //создаём подключение к API через наше приложение $fb = new Facebook\Facebook([ 'app_id' => '{APP_KEY}', 'app_secret' => '{APP_SECRET}', 'default_graph_version' => 'v2.8', ]); |
В код нужно вставить ваши значения ключа и секрета.
Создание токена доступа приложения (accessToken)
Пришло время создать токен доступа.
В документации продемонстрировано множество способов получения токена из разных контекстов, но все как то «мимо кассы» — то из facebook canvas, то из авторизации пользователя. Надеюсь, этот пример будет более полезным.
Снова пригодится ключ и секрет:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
try { //получить токен $response = $fb->get('/oauth/access_token?client_id={APP_KEY}' . '&client_secret={APP_SECRET}&grant_type=client_credentials'); //парсим ответ сервера $resp = $response->getDecodedBody(); //берем значение токена $accessToken = $resp['access_token']; //устанавливаем его для использования по-умолчанию: $fb->setDefaultAccessToken($accessToken); } catch(Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } |
Пример получения данных
В целом, вы готовы уже получить что то из разряда общедоступных данных. Без такого примера, картина была бы не полной.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
//если токен получен... if (isset($accessToken)) { try { //получим данные о пользователе под номером 1000 $response = $fb->get('1000?fields=name,first_name,last_name,age_range' . ',link,gender,locale,picture,timezone,updated_time,verified'); $RS = $response->getGraphUser(); print_r($RS); } catch(Facebook\Exceptions\FacebookResponseException $e) { // When Graph returns an error echo 'Graph returned an error: ' . $e->getMessage(); exit; } catch(Facebook\Exceptions\FacebookSDKException $e) { // When validation fails or other local issues echo 'Facebook SDK returned an error: ' . $e->getMessage(); exit; } } else { echo 'Not logged in'; } |
У меня выводит следующую инфу:
Доступные поля объектов — смотрите в документации: https://developers.facebook.com/docs/reference/php в секции reference.
Здраствуйте, у меня выдает ошибку где
$fb = new Facebook\Facebook([
выдает синтаксическую ошибку на слэш,
как мне можно это исправить?
Версию PHP проверьте, namespace поддерживается с 5.3.
у меня оказывается 5.2.6)))
спасибо большое.