Utilizar Twitter en nuestra APP Android (Parte 1)

Utilizar Twitter en la App de android es un asunto obligatorio en mi proyecto, por lo que no me ha quedado más opción que buscar cómo integrarlo!

Cuando busqué en Google encontré muchísimos tutoriales (algunos bastante buenos) pero a la hora de hacerlos no me funcionaban. Después de tener un arranque de rabia, conseguí calmarme y empezar a investigar… y vi que el problema radicaba en la versión de Android utilizada: Yo lo hacía para 4.2 (API Level 17) y los tutoriales eran para API Level 7. En teoría no debería ser un problema, lo único que a partir de Ice Cream Sandwich había habido cambios y no se permitían ya ciertas prácticas.

Conseguí integrar todo gracias a unas cuantas páginas que encontré, aprovecho para agradecer esta entrada en la que me baso y que no deberías dejar de visitar:

http://blog.doityourselfandroid.com/2011/02/13/guide-to-integrating-twitter-android-application/#more-677

En esta entrada pretendo explicar cómo se ha de integrar twitter en una App Android y estoy abierto a correcciones y comentarios.

Y los pasos técnicos van a ser:

  1. Registrar nuestra App en Twitter y obtener nuestros datos de Twitter relativos a la App (Consumer Key y Consumer Secret)
  2. Seguir el proceso oAuth para autorizar nuestra App para interaccionar en twitter en nombre del usuario.
  3. Guardar sus datos de aceptación
  4. Usar twitter 🙂

Empecemos!

1. Registrar nuestra App en Twitter

Para registrar nuestra App en twitter tenemos que ir a http://dev.twitter.com y accedemos con nuestra cuenta de twitter. Una vez ahí vamos a crear una aplicación:

crear aplicacion twitter

Y nos pedirá ciertos datos que hemos de rellenar

Datos crear App

Y una vez terminado el proceso nos dará unos datos que son únicos de nuestra aplicación y que son secretos, es decir, no debemos dárselos a nadie porque podría actuar en nuestro nombre (digitalmente hablando 😉

Estos datos son CONSUMER_KEY y CONSUMER_SECRET… Encuéntralos porque nos van a hacer falta en la aplicación.

2. Proceso oAuth

Esto es la parte difícil de la integración… resumiendo, oAuth es un sistema de autorización utilizado por muchas plataformas como Facebook, Google, LinkedIn… y por supuesto Twitter que consiste básicamente en que el usuario autoriza en la web respectiva (Facebook, Twitter…) que nuestra aplicación pueda “hablar” en su nombre y acceder a sus datos. De esta manera, el usuario no nos tiene que dar sus credenciales (usuario y contraseña) y podrá revocarnos el acceso en un futuro si ya no quiere que tengamos el mismo.

Para ello, iremos a una cierta URL de Twitter (nos la facilitan ellos, pero es conocida) acompañados de los consumer token y consumer secret que nos dio para identificar nuestra app. Twitter los mirará, identificará nuestra App y nos llevará a otra URL donde le dirá al usuario:

Hola, la aplicación XXXX con descripción YYY quiere pedirte permisos… quiere leer tus tuits / leer y escribir tuits como si fueras tú / leer y escribir tuits como si fueras tú y acceder a tus mensajes privados en twitter. Quieres darle ese permiso?

Entonces el usuario meterá su usuario y contraseña de twitter y dará permiso (o eso esperamos…). Ahora Twitter se redireccionará a la URL Callback proporcionada (ya veremos como, etc) adjuntando el resultado de lo que ha dicho el usuario.

En caso de que el usuario nos lo haya aprobado la aplicación, nos dará un par de numerajos cadenas de caracteres. Eso es la credencial de la aprobación del usuario y nos va a hacer falta CADA VEZ que operemos en su nombre. Es decir, cada vez que pidamos sus tuits, tuiteemos algo… tendremos que enseñarle a twitter esa autorización. Es como: Oye, pon este texto de parte del usuario ZZZZZ… mira, esta es su autorización. Si es correcta, Twitter lo hace.

Bueno, ahora que hemos visto la idea que hay detrás de todo esto, tenemos que ver como se hace en código. Para ello necesitamos varias librerías (podríamos hacerlo todo a mano, supongo… no me lo he planteado bueno en realidad sí pero era mucho curro) que son:

  • signpost-commonshttp4-1.2.1.2.jar
  • signpost-core-1.2.1.2.jar
  • twitter4j-core-3.0.3.jar

(Las librerías las meteremos en la carpeta “libs” de la App de Android)

Empecemos:

Vamos a crear un nuevo proyecto en Eclipse:

creando TwitterTest

Y dejamos todo como está y damos Next todo el rato hasta que nos pida el tipo de actividad, que será BlankActivity. Le dejamos el nombre MainActivity y que nos cree el proyecto con Finish.

Una vez está creado el proyecto, vamos a darle chicha. Lo primero es que nos vamos a crear una clase que nos va a servir para guardar las constantes de Twitter (consumer key, consumer secret, las URLS…). La clase queda como sigue:


package com.mamoreno.utils;

/**
 * This class is going to be a constants Library for the Twitter
 * functionality of this App
 * @author miguelangel.moreno
 *
 */
public class TwitterData {

	public static final String CONSUMER_KEY = "El que te dio twitter";
	public static final String CONSUMER_SECRET = "El que te dio twitter";
	public static final String REQUEST_URL = "https://api.twitter.com/oauth/request_token";
	public static final String AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize";
	public static final String ACCESS_URL = "https://api.twitter.com/oauth/access_token";
	public static final String CALLBACK_URL = "mgl://mamor";

}

Hasta ahí no hay mucho misterio… es solo un contenedor de constantes. Ahora hay que modificar el Manifest para que pida permisos de utilización de Internet y para añadir unos Intent Filters.

El Manifest te tiene que quedar algo así

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mamoreno.twittertest"
    android:versionCode="1"
    android:versionName="1.0" >

	<uses-permission android:name="android.permission.INTERNET"></uses-permission>

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.mamoreno.twittertest.MainActivity"
            android:label="@string/app_name"
            android:launchMode="singleInstance" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <intent-filter>
            	<action android:name="android.intent.action.VIEW" />
            	<category android:name="android.intent.category.DEFAULT" />
            	<category android:name="android.intent.category.BROWSABLE" />
            	<data android:scheme="mgl" android:host="mamor" />
            </intent-filter>

        </activity>
    </application>

</manifest>

Solamente remarcar la parte

<data android:scheme="mgl" android:host="mamor" />

Que debe coincidir con lo que hemos puesto en TwitterData.java (mgl://mamor) ya verás para qué se usa 🙂

Y para que no quede una entrada enorme, lo dejo aquí y sigo en otra entrada! 😉

Anuncios

Etiquetado:,

3 pensamientos en “Utilizar Twitter en nuestra APP Android (Parte 1)

  1. […] la entrada anterior hemos visto el concepto y hemos creado el proyecto, añadiendo nuestras credenciales de twitter y […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: