Рубрики
Без рубрики

Как получить доступ к API Facebook с помощью Java и Spring Boot

Автор оригинала: 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 класса Spring ConnectionFactory . Он предоставляет набор методов для создания 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




Connected successfully!

Welcome to facebook!

You can now browse your own feed here.

You can also see your friend list here.

Как только вы нажмете “Подключиться” на первом просмотре, форма отправит СООБЩЕНИЕ запрос на обработку нашего Контроллера подключения , и начнется авторизация 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);
        PagedList userFeed = 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 .