Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Написание первого приложения ⇐ ПредыдущаяСтр 4 из 4
Активация 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; Просмотров: 219; Нарушение авторского права страницы