Media społecznościowe zawładnęły XXI wiekiem. Ciężko wyobrazić nam sobie aplikację, w której nie możemy zalogować się za pomocą Facebook’a lub Twitter’a. Dlatego właśnie przygotowałam krótki wpis, dzięki któremu dowiecie się jak szybko i łatwo można zaimplementować takie logowanie w kodzie swojej aplikacji wykorzystując Spring Boot’owe biblioteki.
Główna logika odbywa się w klasie ConnectController, która pod endpointem /connect/{providerID}
wykonuje flow związane z wartością providerID. Providerem jest nazwa usługi np. twitter
lub facebook
. Następnie na podstawie nazwy usługi wykorzystywane jest odpowiednie factory, które tworzy połączenie. Połączenia przechowywane są w ConnectionRepository.
Przejdźmy teraz do implementacji. Należy dodać zależności w naszym pom.xml
:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-social-twitter</artifactId> </dependency>
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-social-facebook</artifactId> </dependency>
W pliku application.properties
musimy dodać App ID
oraz App Secret
:
# SPRING SOCIAL FACEBOOK (FacebookAutoConfiguration) spring.social.facebook.app-id= # your application's Facebook App ID spring.social.facebook.app-secret= # your application's Facebook App Secret # SPRING SOCIAL TWITTER (TwitterAutoConfiguration) spring.social.twitter.app-id= # your application's Twitter App ID spring.social.twitter.app-secret= # your application's Twitter App Secret
Aby odczytać te wartości w przypadku Twitter’a musimy mieć zarejestrowane konto na stronie Twitter Application Management. Kody znajdują się w zakładce Keys and Access Tokens. W przypadku Facebook’a musimy posiadać konto na Facebook Developers. Dane dostępne są w zakładce Ustawienia->Podstawowe.
Jeśli chcemy wykorzystać mało spektakularne wbudowane widoki musimy dodać jeszcze jedną linię.
spring.social.auto_connection_views=true
Dzięki temu nie musimy pisać ani jednej linii kodu i mamy gotowe logowanie. Wchodzą teraz pod adres /connect/twitter
zobaczymy taki widok:
Łączymy się z Twitterem i zostajemy poproszeni o zalogowanie się na swoje konto:
A to widok po zalogowaniu:
Analogiczne widoki otrzymamy dla Facebook’a.
Widzicie jakie to proste? Mamy ustawione tak naprawdę tylko propertiesy, a całość załatwia za nas Spring Social. Widoki te oczywiście możemy dostosować do własnych potrzeb. Należy przede wszystkim usunąć wpis o domyślnych widokach z properties’ów. Potem stworzyć swoje widoki w plikach {providerID}Connect i {providerID}Connected (w naszym przypadku twitterConnect i twitterConnected) i umieścić je w folderze connect.
Należy zauważyć, że Spring Social to nie tylko Facebook czy Twitter. Możemy wykorzystać go również do połączeń z wieloma innymi usługami:
Jednym z ciekawszych projektów jest Ecobee, czyli system do zarządzania termostatami. Patrząc na spis dostępnym usług widzimy, że nie wszystkie dotyczą mediów społecznościowych, dlatego nawet sam kierownik projektu Gary Russell, jest zdania, że określenie Social nie jest do końca poprawne. Może lepsze byłoby Connect!