Get it on Google Play

Usando Twitter4j para integrar aplicaciones Java/Android con Twitter

02-08-2012
 

Un requisito que tiene que tener cualquier portal ahora mismo es su integración con las principales redes sociales, por lo menos Twitter y Facebook. En este articulo intentaré explicar de forma muy clara como lo tenemos que hacer para usar la librería Twitter4j para integrar-nos con Twitter, por ejemplo desde una aplicación nativa de Android, escrita en Java. (Otro día lo escribo para portlets Liferay o PHP)

En primer lugar hay que crear nuestra app de twitter desde la página web de desarrolladores de Twitter(https://dev.twitter.com/). Una vez creada nuestra app tendrá asociada una ‘CONSUMER_KEY’ y ‘CONSUMER_SECRET’, que las utilizaremos para comunicarnos con Twitter.

Después, en el momento en que queramos que el usuario nos de permisos para poder interaccionar con su cuenta de twitter tendremos que abrirle la web de Twitter(Como la de la primera imagen) para que el usuario le de permisos a nuestra aplicación. Para ello me creo una clase ‘Activity’ donde sobrescribo el método ‘onCreate’ con este código:

    final String url = provider.retrieveRequestToken(consumer, Constants.OAUTH_CALLBACK_URL);
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse( url ));
    intent = intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND);
    this.startActivity(intent);

También sobrescribo el método ‘onNewIntent(Intent intent)’ para que intercepte cuando el usuario vuelva del Twitter. Luego, me guardo los Token(token y secretToken) que me servirán para comunicarme con twitter (Es la manera en que twitter sabrá que mi aplicación tiene permisos para interactuar con la cuenta de Twitter).

    SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);

    final Uri uri = intent.getData();

    if (uri != null && uri.getScheme().equals(Constants.OAUTH_CALLBACK_SCHEME)) {
    final String oauth_verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);

    try {
       provider.retrieveAccessToken(consumer, oauth_verifier);

       final Editor edit = prefs.edit();
       edit.putString(OAuth.OAUTH_TOKEN, consumer.getToken());
       edit.putString(OAuth.OAUTH_TOKEN_SECRET, consumer.getTokenSecret());
       edit.commit();
    } catch (Exception e) {
       Toast.makeText(getApplicationContext(), "PrepareRequestTokenActivity.onNewIntent"+e, Toast.LENGTH_LONG).show();
       }

    finish();
    }

Finalmente, a partir de ahora ya puedo, por ejemplo, escribir twitts con esta cuenta de esta manera:

    AccessToken a = new AccessToken(token,secretToken);
    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
    twitter.setOAuthAccessToken(a);
    twitter.updateStatus(msg);

Con esto ya podemos comunicarnos con Twitter, Facebook es muy parecido. Finalmente, los trozos de código que he colgado son para Android, pero fácilmente se puede adaptar a otros entornos, por ejemplo un portlet Liferay.

Comments

3 Responses to “Usando Twitter4j para integrar aplicaciones Java/Android con Twitter”
  1. albert says:

    ahora twitter te redirige a una pagina con pin number, q debemos hacer?

  2. Pablo says:

    Hola, ejecuto un código en Java para conseguir los token y el secret token. Una vez conseguidos ejecuto el siguiente codigo en Java:

    AccessToken a = new AccessToken(token,secretToken);
    Twitter twitter = new TwitterFactory().getInstance();
    twitter.setOAuthConsumer(Constants.CONSUMER_KEY, Constants.CONSUMER_SECRET);
    twitter.setOAuthAccessToken(a);
    twitter.updateStatus(msg);

    Y consigo publicar un twitt. Hasta ahí todo como tu lo has escrito y todo perfecto.

    Mi problema viene cuando intento hacer correr ese mismo código sobre Android, en la depuración salta una excepción en la primera línea: AccessToken a = new AccessToken(token,secretToken);.

    Sabes donde puede estar el problema, le he dado los permisos necesarios en el AndroidManifiest.

    ¿Me puedes ayudar? Gracias

  3. Hola Pablo.

    Muy raro, yo esto lo tengo funcionando en Android. Puedes mandar la Excepción?

    Saludos,

Leave a Reply

© Albert Coronado Calzada