Spring Twitter API
El uso de las redes sociales en nuestras aplicaciones web, hoy en día es algo imprescindible, por ello hemos decidido dedicar un tutorial a mostrar el modulo Spring Social, desarrollado con el fin de facilitar el proceso de integración de las distintas redes sociales a nuestras aplicaciones web, en este primer tutorial estudiaremos la API de Twitter, crearemos una aplicación capaz de integrarse con esta tecnología, podremos visualizar las publicaciones, consultar seguidores, publicar Tweets, etc., y mucho más.
Para hacer el desarrollo más sencillo utilizaremos el Framework Spring Boot, más Maven como herramienta de construcción y administración de dependencias.
Registrar aplicación en Twitter
Antes que nada lo primero que debemos hacer es registrar nuestra aplicación, inicia sesión con tu cuenta de Twitter y dirígete a la siguiente dirección: https://apps.twitter.com/
Primero presionamos el botón Create New App para crear nuestra aplicación.
Rellenamos el formulario, especialmente los campos obligatorios, el primer campo define el nombre de la aplicación, el segundo la descripción de la misma, el campo Website establece la URL del sitio que intenta utilizar el servicio de Twitter, en nuestro caso usamos http://127.0.0.1:8080 que indica el servidor local y puerto usado por defecto por Spring Boot, ten presente que debes cambiarlo si tu aplicación se encuentra hospedada en un servidor web, por último Callback URL establece la URL a la que se redirige al usuario cuando este sea autorizado.
Al presionar Create your Twitter application tendremos esto, en la sección Application Settings encontraras el Access level, este indica el nivel de acceso que tendrá nuestra App, es decir lo que puede o no hacer, puede solo leer los tweets o puede también publicar.
En la pestaña Keys and Access Tokens encuentras los tokens de acceso requeridos para poder utilizar esta App, copia estos dos valor ya que debemos indicarlos en la aplicación.
Crear aplicación Spring Boot Twitter
Lo primero es agregar la dependencia spring-social-twitter querida para usar el respectivo servicio, además agregamos spring-boot-starter-thymeleaf para utilizar el motor de plantillas Thymelef para generar las vistas.
Luego agregamos y editamos el archivo src/main/resources/application.properties para incluir las credenciales que mostramos en la imagen anterior, appId corresponde al Consumer Key mientras que appSecret se refiere al Consumer Secret.
spring.social.twitter.appId=xxxxxxxxxxxxxxxxx
spring.social.twitter.appSecret=xxxxxxxxxxxxxxxxxxxxxxxxx
Ahora ya podemos trabajar en nuestro controlador, necesitaremos un objeto Twitter
que podemos usar para acceder a cada una de las funciones de esta tecnología, leer lo tweets, publicar, obtener el perfil, etc.
@Controller
public class TwitterController {
@Autowired
private Twitter twitter;
@Autowired
private ConnectionRepository connectionRepository;
@RequestMapping("/")
public String tweets(Model model) {
if (connectionRepository.findPrimaryConnection(Twitter.class) == null) {
return "redirect:/connect/twitter";
}
List<Tweet> tweets = twitter.timelineOperations().getHomeTimeline();
TwitterProfile profile = twitter.userOperations().getUserProfile();
model.addAttribute("tweets", tweets);
model.addAttribute("profile", profile);
return "tweetsPage";
}
}
Los beans Twitter
y ConnectionRepository
son creados y configurados por Spring Boot, solo necesitamos inyectarlos a nuestro controlador, el siguiente fragmento de código es usado para comprobar si tenemos una conexión disponible, si no así, redirigimos a la URL que le permitirá al usuario darle autorización a la App.
if (connectionRepository.findPrimaryConnection(Twitter.class) == null) {
return "redirect:/connect/twitter";
}
Presionamos Autorizar la aplicación, puedes ver los permisos que le estas dando a la misma, se describe lo que puedo y no hacer la Aplicación.
Nuestra App consulta la información del perfil de usuario y la lista de Tweets, este es el código.
List<Tweet> tweets = twitter.timelineOperations().getHomeTimeline();
TwitterProfile profile = twitter.userOperations().getUserProfile();
model.addAttribute("tweets", tweets);
model.addAttribute("profile", profile);
Para conocer las distintas operaciones que puedes realizar visita la documentación de referencia.
Esto datos son enviados a la página /templates/tweetsPage.html que se define así:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<body>
<h3>Hola, <span th:text="${profile.name}">Usuario</span></h3>
<h4>Tweets List</h4>
<ul>
<li th:each="tweet : ${tweets}" style="list-style: none;">
<div class="tweet-container">
<img th:src="${tweet.user.profileImageUrl}" style="display: block; margin-bottom: 10px;"/>
<span th:text="${tweet.user.name}">Username</span>
<p th:text="${tweet.text}">Tweet</p>
</div>
</li>
</ul>
</body>
</html>
El resultado obtenido, si nos conectamos a nuestra cuenta de Twitter: @TrProgramacion
Debemos mencionar que adicionalmente creamos dos páginas /templates/connect/twitterConnect.html y además /templates/connect/twitterConnected.html los controladores de ambas son creados automáticamente por el Framework por lo que debemos asegurarnos de que tengan la ruta y nombre exactos.
Iremos a la página twitterConnect.html cuando nos estemos conectados a la cuenta, la misma muestra un botón que nos envía a la página de autorización mostrada previamente, por otra parte twitterConnected.html es la página a la que somos dirigidos luego de autorizar la App, la misma solo contiene un enlace a la página inicial de nuestra web.
Descargar ejemplo: springboot-twitter.zip
Comentarios
Publicar un comentario