Автор оригинала: David Landup.
Обзор
Возможность доступа к API-интерфейсам с основных платформ социальных сетей может быть использована в качестве мощного и полезного инструмента. К счастью, это нетрудно сделать, особенно с помощью Spring Boot, а точнее, модуля Spring Social .
Spring Social предлагает четыре основных проекта:
- Весеннее Социальное ядро
- Весенняя Социальная сеть Facebook
- Весенний Социальный Твиттер
- Весенняя социальная сеть LinkedIn
Каждый из этих проектов предоставляет инструменты для взаимодействия со своими соответствующими API.
В этом уроке мы будем полагаться на Spring Social Facebook , чтобы создать простое приложение, которое аутентифицирует и авторизует пользователя, а затем показывает ему их собственную ленту Facebook.
Предпосылки
Для того, чтобы этот проект работал, необходимы две вещи.
Применение Пружинной Загрузки
Мы начнем с приложения Spring Boot по умолчанию. К счастью, используя Spring Initializr или даже встроенный Плагин IntelliJ Idea Spring Initializr, мы можем легко создать скелетный проект для создания.
Какой бы вариант вы ни выбрали, выберите зависимости Web и Thymeleaf , остальные мы добавим позже.
Разработчики Facebook
Кроме того, для того, чтобы Spring Social могла взаимодействовать с API Facebook, ей требуется приложение Facebook.
Чтобы создать приложение Facebook, у вас должна быть учетная запись Разработчика Facebook .
После регистрации вы можете добавить новое приложение. Для этого требуется только имя и контактный адрес электронной почты, и выглядит это так:
Открыв вкладку ” Настройки “после выбора приложения, вы получите необходимую информацию для настройки связи между Spring Social и вашим приложением, например” Идентификатор приложения “и”Секрет приложения”.
Зависимости Maven
Предполагая, что вы правильно настроили приложение Spring Boot, теперь мы можем добавить остальные необходимые зависимости:
org.springframework.boot spring-boot-starter-web com.h2database h2 1.4.190 org.springframework.social spring-social-facebook 3.0.0.M1 org.springframework.social spring-social-core 2.0.0.M2 org.springframework.social spring-social-config 2.0.0.M2 org.springframework.boot spring-boot-starter-thymeleaf
Зависимость для базы данных H2 включена просто потому, что для загрузки Spring требуется источник данных, и проще всего просто предоставить его для него.
Доступ к API Facebook
Включение Facebook
Для продолжения требуется соединение между вашим приложением Spring и приложением Facebook.
Чтобы настроить соединение, откройте файл application.properties
, расположенный в src/main
и введите:
spring.social.facebook.appId = // your application ID spring.social.facebook.appSecret = // your application secret
Определение этих двух свойств предупреждает о появлении социальной сети Facebook, и это создает два важных компонента для нашего приложения.
Контроллер подключения
– Этот класс управляет потоком подключений для поставщика услуг от учетной записи и обрабатывает все запросы, касающиеся Facebook.FacebookConnectionFactory
– Реализация Facebook класса SpringConnectionFactory
. Он предоставляет набор методов для создания href=”https://docs.spring.io/spring-social/docs/1.0.3.RELEASE/api/org/springframework/social/connect/Connection.html”>Подключение
экземпляры для Facebook. href=”https://docs.spring.io/spring-social/docs/1.0.3.RELEASE/api/org/springframework/social/connect/Connection.html”>
Создание соединения
Как упоминалось выше, контроллер Connect
является основной рабочей силой в этой области. Этот контроллер будет обрабатывать наши запросы GET , когда мы захотим подключиться к Facebook. Для правильной работы требуется всего два простых представления
– подключение/Подключение к facebook
и подключение/Подключение к facebook
.
Facebook может быть заменен здесь любым другим идентификатором провайдера, например “twitter”, и в этом случае для этого потребуется подключиться/twitterConnect
и подключиться/twitterConnected
просмотр.
Давайте сами определим эти взгляды:
Подключение к facebook:
Spring Boot Facebook Application Connect to Facebook:
By clicking connect, you will be asked to authorize the application.
Подключенный facebook:
Spring Boot Facebook Application
Как только вы нажмете “Подключиться” на первом просмотре, форма отправит СООБЩЕНИЕ запрос на обработку нашего Контроллера подключения
, и начнется авторизация OAuth|/.
Получение Данных Facebook
С полностью настроенным подключением к Facebook мы можем продолжить и написать наш основной контроллер:
@Controller public class MainController { private Facebook facebook; private ConnectionRepository connectionRepository; public MainController(Facebook facebook, ConnectionRepository connectionRepository) { this.facebook = facebook; this.connectionRepository = connectionRepository; } @RequestMapping(value = "feed", method = RequestMethod.GET) public String feed(Model model) { if(connectionRepository.findPrimaryConnection(Facebook.class) == null) { return "redirect:/connect/facebook"; } User userProfile = facebook.userOperations().getUserProfile(); model.addAttribute("userProfile", userProfile); PagedListuserFeed = facebook.feedOperations().getFeed(); model.addAttribute("userFeed", userFeed); return "feed"; } }
Этот контроллер работает простым способом. Это требует, чтобы мы ввели Facebook
и ConnectionRepository
в его конструктор. Класс Facebook
предоставляет основные методы взаимодействия с Facebook, в то время как класс ConnectionRepository
, как следует из названия, является интерфейсом доступа к данным для Подключения
объектов.
Аннотация @RequestMapping
определяет две вещи – значение и метод :
- Значение – Соответствует параметру запроса, который мы хотим отобразить.
- Метод – Соответствует типу ожидаемого HTTP-метода.
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
connectionRepository.Найдите первичное соединение(Facebook.class)
будет иметь значение null только в том случае, если пользователь не разрешил вашему приложению получать данные из Facebook. В этом случае приложение просто возвращается в /подключение/facebook
.
Объект User
из API Spring Social Facebook используется для хранения данных нашего пользователя. Этот объект может содержать всю общедоступную информацию пользователя, такую как имя и фамилия, возрастной диапазон, день рождения, родной город, адрес электронной почты и т.д…
Затем мы создаем Список страниц
из Сообщений
, соответствующий собственному каналу пользователя, и добавляем его в качестве атрибута модели в наше представление.
Теперь нам нужно определить представление, в котором мы будем отображать эту информацию с помощью Thymeleaf .
кормить.html :
Spring Boot Facebook Application Welcome, !
Facebook Feed:
from posted:message text
Примечание : Начиная с версии 2.0 Facebook, возможность получения списка друзей Facebook была удалена. Эта функция больше не поддерживается Facebook, и попытка получить список друзей весной просто вернет пустой список.
И на этом данное заявление заканчивается. Давайте запустим его и посмотрим на результат.
Демонстрация приложения
После развертывания приложения и перехода на локальный хост:8080/подключение/facebook
нас приветствует наше приложение с просьбой подключиться:
При подключении мы перенаправляемся на Facebook, запрашивая у нас разрешение действительно предоставить этому приложению наши данные:
Выбрав “Продолжить”, мы аутентифицируем приложение и перенаправляемся на наш facebookConnected.html
просмотр.
Отсюда мы можем посетить нашу ленту:
Посетив нашу ленту, вы увидите некоторые из наших последних постов:
Дополнительные Функциональные возможности
Весенние светские мероприятия на этом не заканчиваются. Помимо проверки вашей ленты, он предлагает множество других функций:
Операции достижения
– Предоставляет операции для достижений Facebook.Операции с комментариями
– Предоставляет операции CRUD для комментариев.Операции с событиями
– Предоставляет операции CRUD для событий, а также приглашения.Операции с лентой
– Извлечение и размещение на стене Facebook.Операции с друзьями
– Получение списков друзей.Групповые операции
– Извлечение информации из групп (участников, сведений и т.д.)Операции "Нравится"
– Получение и выполнение лайков на сообщениях, страницах и т.д.Операции с мультимедиа
– Обеспечивает операции с CRUD для таких носителей, как фотографии/видео/альбомы.Операции с открытым графиком
– Предоставляет операции для API OpenGraph Facebook.Операции со страницами
– Предоставляет операции для страниц Facebook.Операции в социальном контексте
– Предоставляет операции для социального контекста пользователя.Операции тестового пользователя
– Предоставляет операции для создания и использования тестовых пользователей.Операции пользователя
– Получение информации о пользователе.Операции Rest
– Используется для размещения заголовка авторизации OAuth для токенов доступа, отправляемых по запросам.
Каждый из них предоставляет наборы методов для их целевого назначения, и в совокупности они могут быть использованы для создания мощных инструментов.
Охват всего этого вышел бы за рамки этого блога, поэтому мы рассмотрим только самые важные и полезные из них, такие как размещение на стенах, чтение каналов и так далее.
Получение Других Профилей
Так же, как мы делали, когда получали наши собственные данные, мы можем получать данные и от других пользователей, передавая их идентификатор в качестве параметра:
// Retrieves authenticated user's profile User profile = facebook.userOperations().getUserProfile();
// Retrieves the user's profile whose id is 4. User profile = facebook.userOperations().getUserProfile(4);
Забавный факт : Идентификатор с числовым значением ” 4 ” принадлежит Марку Цукербергу, и все дети до этого были тестовыми аккаунтами в первые дни существования Facebook.
Публикация Статусов
Размещение в вашей ленте так же просто, как вызов одного метода с параметром String
. Но имейте в виду, что вы можете публиковать сообщения только в лентах пользователей, которые аутентифицируют приложение, и они не могут публиковать их на стенах своих друзей.
Возможно, вы захотите использовать это для написания автоматизированных сервисов, таких как IFTTT или Буфер :
facebook.feedOperations().updateStatus("Hello World!!!");
Это просто опубликует один статус со строкой |, которую вы ввели.
Еще один способ опубликовать статус-это разместить ссылку:
FacebookLink facebookLink = new FacebookLink("link", "name", "caption", "description"); facebook.feedOperations().post("Posting a link!", facebookLink);
Публикация в ленте друга
Эта функция была удалена Facebook в 2013 году.
Получение списка друзей
Эта функция была удалена Facebook в 2014 году.
Вывод
В этом уроке мы погрузились в Spring Social, а точнее, в проект Spring Social Facebook.
Мы создали учетную запись разработчика Facebook и приложение Spring Boot с подключением к нашему приложению Facebook.
После этого мы изучили некоторые функции проекта Facebook в нашей собственной, а также некоторые другие функции, которые предлагает этот API.
Исходный код этого проекта доступен на GitHub .