Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Написание первого приложения



Активация Facebooke

До того, как получить пользовательские данные из Facebook, необходимо указать ID приложения и секретное слово в свойствах spring.social.facebook.appId и spring.social.facebook.appSecret. Можно настроить эти свойства через любые средства, поддерживаемые Spring Boot, включая их установку в файл application.properties:

 

spring.social.facebook.appId={{put app ID here}}

spring.social.facebook.appSecret={{put app secret here}}

 

Значения, передаваемые этим свойствам, соответствуют значениям ключа и секретного слова, которые были даны при регистрации приложения в Facebook. Чтобы код заработал, достаточно заменить значения свойств на правильные значения.

Присутствие этих свойств и Spring Social Facebook в classpath приведет к автоматической настройке Spring Social ConnectController, FacebookConnectionFactory и других компонент Spring Social фреймворка.

 

Создание представления статуса соединения

Однако, несмотря на то, что ConnectController многое делает, перенаправляя на Facebook и обрабатывает перенаправления из Facebook, он также отображает состояние подключения, если сделать запрос /connect. ConnectController отображает представление, соответствующее connect/{provider ID}Connect когда не существует соединения и к connect/{provider ID}Connected, когда оно доступно. В данном случае, {provider ID} является "facebook".

ConnectController не имеет собственного представления, поэтому необходимо создать его. Для начала, будет отображено вот это Thymeleaf представление при отсутствии соединения с Facebook:

 

<html>

<head>

       <title>Hello Facebook</title>

</head>

<body>

       <h3>Connect to Facebook</h3>

 

<form action="/connect/facebook" method="POST">

             <input type="hidden" name="scope" value="read_stream" />

             <div class="formInfo">

                   <p>You aren't connected to Facebook yet. Click the button to connect this application with your Facebook account.</p>

             </div>

             <p><button type="submit">Connect to Facebook</button></p>

       </form>

</body>

</html>

 

Форма отобразится при POST запросе /connect/facebook, который обрабатываетсяConnectController и который запускает OAuth авторизацию.

Это представление, которое отображается при наличии соединения:

 

<html>

<head>

       <title>Hello Facebook</title>

</head>

<body>

       <h3>Connected to Facebook</h3>

 

       <p>

             You are now connected to your Facebook account.

             Click <a href="/">here</a> to see some entries from your Facebook home feed.

       </p>

</body>

</html>

 

Сбор Facebook данных

Теперь, когда Facebook настроен в приложении, вы можно написать Spring MVC контроллер, который собирает данные пользователя, авторизованного в приложении и отображает его в браузере. HelloController будет являться таким контроллером:

 

package hello;

 

import javax.inject.Inject;

 

import org.springframework.social.facebook.api.Facebook;

import org.springframework.social.facebook.api.PagedList;

import org.springframework.social.facebook.api.Post;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

 

@Controller

@RequestMapping("/")

public class HelloController {

 

private Facebook facebook;

 

@Inject

public HelloController(Facebook facebook) {

   this.facebook = facebook;

}

 

@RequestMapping(method=RequestMethod.GET)

public String helloFacebook(Model model) {

   if (!facebook.isAuthorized()) {

       return "redirect:/connect/facebook";

   }

 

   model.addAttribute(facebook.userOperations().getUserProfile());

   PagedList<Post> homeFeed = facebook.feedOperations().getHomeFeed();

   model.addAttribute("feed", homeFeed);

 

   return "hello";

}

 

}

HelloController сделан с конструктором, одним из параметров которого являетсяFacebook объект. Facebook объект предоставляет доступ к Spring Social Facebook API.

Метод helloFacebook() имеет аннотацию @RequestMapping и означает, что он должен обрабатывать GET запросы для корневого адреса "/". Первое, что он делает, это проверка авторизован ли пользователь для доступа к пользовательским данным в Facebook. Если нет, то пользователь перенаправляется к ConnectController, чтобы начать процесс авторизации.

Если пользователь авторизован, то приложение может собирать любые данные, которые ему доступны. В этом примере, приложение собирает только данные профиля пользователя, в частности, список профилей пользователей, которые подписаны на авторизованного пользователя. Они помещены в модель, которая отбражается при обращении к "hello".

Говоря о представлении "hello", возьмем такой Thymeleaf шаблон:

 

<html>

<head>

       <title>Hello Facebook</title>

</head>

<body>

       <h3>Hello, <span th:text="${facebookProfile.name}">Some User</span>!</h3>

 

       <h4>Here is your home feed:</h4>

 

       <div th:each="post:${feed}">

             <b th:text="${post.from.name}">from</b> wrote:

             <p th:text="${post.message}">message text</p>

             <img th:if="${post.picture}" th:src="${post.picture}"/>

             <hr/>

       </div>

</body>

</html>

 

Этот шаблон просто отображает приветствие к пользователю и список его друзей. Обратите внимание, что несмотря на то, что были получены полные профили пользователей, в шаблоне отображаются только их имена.



 

Создание исполняемого приложения

Несмотря на то, что пакет этого сервиса может быть в составе web-приложения и WAR файлов, более простой подход, продемонстрированный ниже создает отдельное самостоятельное приложение. Вы упаковываете все в единый, исполняемый JAR-файл, который запускается через хорошо знакомый старый main() Java-метод. Попутно, вы используете поддержку Spring для встроенного Tomcat контейнера сервлетов как HTTP среду выполнения вместо развертывания на сторонний экземпляр.

 

package hello;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;

import org.springframework.context.annotation.ComponentScan;

import org.springframework.context.annotation.Configuration;

 

@Configuration

@EnableAutoConfiguration

@ComponentScan

public class Application {

 

/*

* SPRING BOOTSTRAP MAIN

*/

public static void main(String[] args) {

   SpringApplication.run(Application.class, args);

}

 

}

main() метод передает управление вспомогательному классу SpringApplication, где Application.class - аргумент его run() метода. Это сообщает Spring о чтении метаданных аннотации из Application и управлении ею как компонента в Spring application context.

Аннотация @ComponentScan говорит Spring'у рекурсивно искать в пакете hello и его потомках классы, помеченные прямо или косвенно Spring аннотацией @Component. Эта директива гарантирует, что Spring найдет и зарегистрирует GreetingController, потому что он отмечен @Controller, который, в свою очередь, является своего рода @Component аннотацией.

Аннотация @EnableAutoConfiguration переключает на приемлемое по умолчанию поведение, основанное на содержании classpath. К примеру, так как приложение зависит от встраиваемой версии Tomcat (tomcat-embed-core.jar), Tomcat сервер установлен и сконфигурирован на приемлемое по умолчанию поведение от вашего имени. И так как приложение также зависит от Spring MVC (spring-webmvc.jar), Spring MVC DispatcherServlet сконфигурирован и зарегестрирова, web.xml не нужен.

 

Запуск приложения

Когда приложение запустится, необходимо открыть в браузере адрес http://localhost:8080. Так как подключение пока не существует, будет предложено создать соединение с Facebook:

При нажатии Connect to Facebook, браузер перенаправит пользователяна страницу авторизации:

На данном этапе Facebook спросит разрешение приложению получить доступ к профилю и записям.

Получив разрешение, Facebook перенаправит к приложению. Соединение создано и сохранено в репозитории соединения. Эта страница означает, что соединение установлено:

Если нажать на ссылку на странице статуса соединения, можно перейдете на главную страницу.


 


Заключение

В данной работе были рассмотрены возможности только платформы Facebook в связи с тем, что это самый наглядный пример технологии Java Spring Social.

Алгоритм работы с технологией Java Spring Social являются шаблонными для большинства социальных сетей. Основными этапами JSS являются: регистрация своего приложения как разработчика, подключение зависимостей в своё приложения, получения данных от пользователей (с согласия пользователей).


 







Последнее изменение этой страницы: 2019-04-01; Просмотров: 142; Нарушение авторского права страницы


lektsia.com 2007 - 2022 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.026 с.) Главная | Обратная связь