El uso de las redes sociales en aplicaciones moviles el dia de hoy es bastante utilizado, la mayoria de las paltaformas ofrecen sus api para ser consumidas por los developer y estos integrarlas a sus aplicaciones. Twitter no es la excepion ofreciendo todas las posibilidades de su pagina a una muy buena Api, desde simplemente ver un timelime hasta ver todo el historia de DMs.
Android y twitter
Para este tutorial estaremos utilizando la libreria Twitterj4, pueden pasar y darle un ojo cuando tengan tiempo.
Antes de comenzar a codear lo primero que necesitamos es crear una aplicacion de twitter para poder opterner los datos de «authenticacion» y todo lo demas.
Crear la aplicacion de twitter
llenar los campos obligatorios para poder crear la aplicacion.
Una vez creada tendran algo como esto.
Luego de crear nuestra aplicacion debemos de crear los token de aceso.
Una vez creado los datos de acceso tendremos los siguientes campos disponibles:
<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:host="url-example" android:scheme="oauth" /> </intent-filter>
Agregar permisos de internet
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
La url es la que pondremos para que realice el callback con esa url de ejemplo funcionara, mas luego veran donde la editamos, pueden poner cualquier valor ahi.
Manos en el codigo.
Debemos de declarar varias constantes
static String TWITTER_CONSUMER_KEY = "api key"; static String TWITTER_CONSUMER_SECRET = "api secret"; static final String TWITTER_CALLBACK_URL = "oauth://url-example";
Tenemos un metodo para realizar el login con twitter que es de esta forma.
public void loginTwitter(){ ConfigurationBuilder builder = new ConfigurationBuilder(); builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); Configuration configuration = builder.build(); TwitterFactory factory = new TwitterFactory(configuration); Twitter twitter = factory.getInstance(); try { requestToken = twitter.getOAuthRequestToken(TWITTER_CALLBACK_URL); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(requestToken.getAuthenticationURL()))); } catch (TwitterException e) { e.printStackTrace(); } }
Nuestor metodo oncreate sera donde llamemos para hacer el login con twitter, tendriamos algo asi.
Creamos una variable estatica y privada para guardar el request token y tener la misma instancia. (No es la mejor forma pero es la mas rapida).
private static RequestToken requestToken;
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //Para los fines de este tutorial hare esto, pero no es recomendable hacer http request en el main thread. // Ya sera en otra ocacion donde explicare como hacer los request en segundo plano. // Simplemente usen un AsyncTask http://stackoverflow.com/questions/9671546/asynctask-android-example StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); Uri data = getIntent().getData(); if(data != null){ String token = data.getQueryParameter("oauth_token"); String oauthVerified = data.getQueryParameter("oauth_verifier"); // ConfigurationBuilder builder = new ConfigurationBuilder(); builder.setOAuthConsumerKey(TWITTER_CONSUMER_KEY); builder.setOAuthConsumerSecret(TWITTER_CONSUMER_SECRET); Configuration conf = builder.build(); TwitterFactory factory = new TwitterFactory(conf); Twitter twitter = factory.getInstance(); RequestToken r = requestToken; if(twitter != null){ try { AccessToken accessToken = twitter.getOAuthAccessToken(r, oauthVerified); this.setTitle("Twitter " + accessToken.getScreenName().toString()); } catch (IllegalStateException e) { e.printStackTrace(); } catch (TwitterException e) { e.printStackTrace(); } } }else{ loginTwitter(); } }
Si todo sale bien tendrian algo como esto.