SlideShare una empresa de Scribd logo
Workshop:

Integración de Social Media en
            Android
       Appcircus Academy
          Alberto Alonso Ruibal
       alberto.ruibal@mobialia.com
       T: @mobialia @albertoruibal
Quién soy
Ingeniero de Telecomunicación
                    System Manager
                    J2EE Developer
Desarrollador Android @ Mobialia
        Mobialia Chess, Internet Chess Club App
   Gasolineras España, Connect-4, Trivial, Slot Racing
              Martin Varsavsky's RadioMe
             Track my Followers for Twitter
Mi blog: http://www.alonsoruibal.com
Mi empresa: http://www.mobialia.com
Más recursos para aprender Android
Desarrollé la aplicación WikiPlaces como ejemplo para
LabAndroid Málaga. Esta aplicación contiene varios ejemplos
de cómo hacer muchas cosas comunes en Android
●   Pantalla inicial con un Dashboard
●   Crear pantallas de preferencias y obtener preferencias
●   Usar la API de Google Maps API (incluyendo overlays) y la
    Location API para obtener la ubicación
●   Usar servicios JSON externos
●   Listas y adapters
●   Lanzar aplicaciones externas con Intents
●   Integración con AdMob para mostrar anuncios
              http://www.mobialia.com/labandroid
¿Por qué integrar social media?

● Obtener datos de la red social
● Conseguir visibilidad en redes sociales


● Compartir datos de la aplicación


● Simplificar el login para los usuarios

  de tu aplicación
● Obtener datos adicionales del usuario
Aplicación de demostración




Todos los ejemplos de esta presentación
    están en una aplicación de código abierto:
http://www.mobialia.com/social_media_demo/
El botón de compartir
    ●   Muy fácil de implementar
    ●   Lanzamos un intent de tipo “ACTION_SEND” que va a
        ser recibido por las aplicaciones de social media

    public void onShareChoose(View v) {
   String shareText = ((EditText)
findViewById(R.id.EditText)).getText().toString();
        Intent intent = new Intent(android.content.Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(android.content.Intent.EXTRA_TEXT, shareText);
   startActivity(Intent.createChooser(intent,
getResources().getText(R.string.share_choose)));
}
Intents en Android
Son un sistema en Android que podemos
  utilizar para lanzar actividades de la
  misma o de diferentes aplicaciones

Una actividad lanza un intent
   El intent puede incluir datos “extra”
             Otra actividad recibe el intent
Esto muesta el selector de actividad
Especificando el componente
Podemos lanzar una actividad específica
(en este ejemplo lanzamos la aplicación
oficial de Twitter):

PackageManager packageManager = context.getPackageManager();

List<ResolveInfo> activityList = packageManager.queryIntentActivities(intent, 0);

for (ResolveInfo act : activityList) {

 if (act.activityInfo.name.indexOf("com.twitter.") == 0) { // Check it if starts by...

  ComponentName name = new ComponentName(act.activityInfo.applicationInfo.packageName,
act.activityInfo.name);

  intent.setComponent(name);

  startActivity(intent);

...
Integración con Twitter

●   En este ejemplo mostraremos el timeline del
    usuario
●   Twitter utiliza autenticación OAUTH
●   La respuesta de la API de Twitter es JSON
●   Hay muchas opciones, yo prefiero signpost
    http://code.google.com/p/oauth-signpost/
Añadiendo signpost
Hay tres versiones de la librería:
●   java.net.HttpUrlConnection
●   Apache Commons HTTP (usamos esta)
●   Jetty HTTP Client
Para integrarla es necesario descargar:
●   signpost-core-1.2.1.1.jar
●   signpost-commonshttp4-1.2.1.1.jar
Y añadirlos al build path de Eclipse
Obteniendo una API Key de Twitter (I)
Registra tu aplicación en https://dev.twitter.com/apps
Obteniendo una API Key de Twitter (II)
Una vez registrado,puedes optener el “Consumer key” y
el “Consumer secret” e insertarlos en el código:




OAuthConsumer oauthConsumer = new CommonsHttpOAuthConsumer(
  // the consumer key of this app (replace this with yours)
  "RFbRzd0BzYGZjrDd02ec5g" ,
  // the consumer secret of this app (replace this with yours)
  "wo9lKhzwpEfdXS2Z3dO2W092W9pMoJGrc5kUsBdA");
Interceptando la URL de callback
Interceptamos la URL de callback
“socialmediademo://twitter” URL modificando el
AndroidManifest.xml:
<activity
android:name =".TwitterProviderActivity"
android:label ="@string/app_name">
<intent-filter>
 <action android:name="android.intent.action.VIEW"></action>
 <category android:name="android.intent.category.DEFAULT"></category>
 <category android:name="android.intent.category.BROWSABLE"></category>
 <data android:scheme="socialmediademo" android:host="twitter"></data>
</intent-filter>
</activity>
Autenticando al usuario
Ahora redirigimos al usuario a la URL de autenticación,
especificando una URL de callback:
public static String CALLBACK_URL = "socialmediademo://twitter";
//...
 String authUrl = oauthProvider.retrieveRequestToken(oauthConsumer,
CALLBACK_URL);
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl));
// save token
accessToken     = oauthConsumer.getToken();
tokenSecret = oauthConsumer.getTokenSecret();
 intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND |
Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Autenticación de Twitter



La página de Twitter se abre
en el navegador del sistema


Este ejemplo es de sólo
lectura (no se puede hacer
follow o enviar mensajes)
Verificando el login del usuario
Entonces, en la actividad que recibe el
callback (TwitterProviderActivity):

Uri uri = this.getIntent().getData();
String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER);
oauthConsumer.setTokenWithSecret(accessToken, tokenSecret);
oauthProvider.retrieveAccessToken(oauthConsumer, verifier);
// save new token
accessToken   = oauthConsumer.getToken();
tokenSecret = oauthConsumer.getTokenSecret();
Obteniendo los mensajes del timeline
Ahora podemos lanzar peticiones contra los
métodos de la API REST:

 String url =
"http://api.twitter.com/1/statuses/home_timeline.json?count=100";
HttpGet request = new HttpGet(url);
HttpClient httpClient = new DefaultHttpClient();
// sign the request
oauthConsumer.setTokenWithSecret(accessToken, tokenSecret);
oauthConsumer.sign(request);
HttpResponse response = httpClient.execute(request);
Interpretando la respuesta JSON
La API de Android integra un parser JSON

JSONArray array = new JSONArray(response);
for (int i = 0; i < array.length(); i++) {
    JSONObject user = object.getJSONObject("user");
    Update update = new Update();


update.setMessage(Html.fromHtml(object.getString("text")).toString()
);
    update.setUserId(user.getString("screen_name"));
    update.setUserName(user.getString("name"));
// ...
Finalmente mostramos el timeline

             En el código fuente
             también se puede
             encontrar:
              ●   Adapter de lista para
                  las actualizaciones de
                  estado
              ●   Cache de imágenes
Integración con LinkedIn

●   Muy similar a Twitter, también podemos usar
    libsignpost
●   API XML/JSON
●   Un pequeña diferencias: se necesita
    especificarle a signpost que LinkedIn utiliza
    OAUTH version 1.0a:
     oauthProvider.setOAuth10a(true);
Obteniendo una API Key de LinkedIn
https://www.linkedin.com/secure/developer
Autenticación de LinkedIn


          Funciona como la de Twitter,
          abriendo el navegador del
          sistema
          También tenemos una URL
          de Callback
Llamando a la API de LinkedIn
Por defecto en XML, debemos enviarle el
parámetro “&format=json”

String response =
httpRequest("http://api.linkedin.com/v1/people/~/network/updates?
count=100&format=json");
if (response != null) {
JSONObject object = new JSONObject(response);
//...
Resultado de LinkedIn


         Muestra las
         actualizaciones de estado
         de tus contactos de
         LinkedIn
Integrando Google+


●   Soporte OAuth 1.0a y 2.0 (experimental)
●   Podríamos usar google-api-java-client:
http://code.google.com/p/google-api-java-client/
●   En nuestro ejemplo utilizamos libsignpost con
    OAUTH 1.0a, también es necesario
    especificárselo explícitamente a libsignpost
Limitaciones de la API de Google+

●   Sólo lectura
●   No podemos acceder a los “Circles” del usuario
●   No se puede acceder al “Timeline”
Qué se puede hacer:
●   Obtener información de un usuario
●   Listar las “Actividades” de un usuario
●   Hacer búsquedas
Registrar un dominio para OAUTH 1
https://accounts.google.com/ManageDomains
Crear aplicación en Google API
               Console
         https://code.google.com/apis/console/




Registramos la
aplicación para obtener
una “API key”
Configurando OAUTH para Google+
●   Se crea el Consumer OAUTH con el dominio
oauthConsumer = new CommonsHttpOAuthConsumer("mobialia.com",
                                                "xxxxxxxxxxxxx");
●   Al crear el proveedor OAUTH le pasamos como parámetro
    una URL para el “scope”
String URL = "https://www.googleapis.com/auth/plus.me";


oauthProvider = new CommonsHttpOAuthProvider(
"https://www.google.com/accounts/OAuthGetRequestToken?scope=" +
      URLEncoder.encode(URL, "utf-8"),
"https://www.google.com/accounts/OAuthGetAccessToken",
"https://www.google.com/accounts/OAuthAuthorizeToken?hd=default");
Llamando a Google+
●   La autenticación funciona igual que la de
    Twitter
●   La key de la Google APIs console se le pasa
    en el momento de la llamada:
String response =
 httpRequest("https://www.googleapis.com/plus/v1/
people/me/activities/public?
key=AIzaSyBRloeHFF1G2_GafnnbhthvnYXljIi4oc4");
Resultado de Google+



         En nuestro ejemplo
         mostramos las
         “Actividades” del usuario
         que se ha autenticado en
         Google+
Utilizar el social media para login
No hace falta pedirle todos los datos al usuario
Yo recomiendo Facebook:
  ● Más usuarios


  ● Más datos de cada usuario


Podemos obtener datos adicionales del usuario:
  ● Género


  ● Edad


  ● ...
Integración con Facebook

●   Utiliza OAUTH 2.0, libsignpost no lo soporta
●   Necesitamos el SDK de Facebook de Github:
    https://github.com/facebook/facebook-android-sdk/
●   Configuramos el SDK de Facebook como un
    proyecto “Librería” y añadimos una
    dependencia a esa librería
●   Usamos la nueva Graph API
Obteniendo una API Key de
            Facebook (I)
https://www.facebook.com/developers/
Obteniendo una API Key de
               Facebook (II)
Aquí tenemos el identificador de la aplicación
Necesitamos especificarle un hash de la clave de nuestro
certificado: keytool -exportcert -alias androiddebugkey -keystore
~/.android/debug.keystore | openssl sha1 -binary | openssl base64
Preparando el objeto de Facebook
Y lanzando la autenticación de Facebook

final   int ACTIVITY_CODE = 777;
final String appId = "219172308103195";
final String[] PERMISSIONS = new String[] { "user_birthday" };


Facebook fb = new Facebook(appId);
fb.authorize(this, PERMISSIONS, ACTIVITY_CODE, this);
// (Callback not detailed)
Login con Facebook

       Abre una Actividad de
       Facebook solicitando los
       datos de autenticación
Obtener datos del usuario de
              Facebook
Una vez autenticados podemos lanzar peticiones,
“/me” obtiene la información del usuario

String res = fb.request("/me");
JSONObject object = new JSONObject(res);
Log.d(TAG, object.getString("id"));
Log.d(TAG, object.getString("name"));
Log.d(TAG, object.getString("gender"));
Log.d(TAG, object.getString("birthday"));
Mejorando los anuncios con los
          datos del usuario
●   Podemos especificarle a AdMob el sexo del
    usuario y su edad:

AdRequest adRequest = new AdRequest();
adRequest.setGender(Gender.FEMALE);
adRequest.setBirthday("19790129");
AdView adView = (AdView) this.findViewById(R.id.adView);
adView.loadAd(adRequest);
Resultado de Facebook
       La aplicación de demo
       muestra los datos del usuario
       El anuncio mostrado se
       puede con los datos del
       usuario
       Podemos utilizar los datos
       del usuario en varias partes
       de la application
       ¡Cuidado con la LOPD si los
       guardamos en un servidor
       nuestro!
Más ideas
● Se puede utilizar una WebView para
  integrar Social Media
● Botón para hacer “Follow” integrando

  la API de Twitter
● Botón “Like” para facebook: necesita

  crear una página en Facebook
● “Foursquare” API integration
Redes sociales para gaming
Redes sociales específicas para
compartir LeaderBoards,
Achievements...
● OpenFeint


● ScoreLoop
Preguntas...


Gracias por vuestra atención!


        Alberto Alonso Ruibal
     alberto.ruibal@mobialia.com
       http://www.mobialia.com
     T: @mobialia @albertoruibal

Más contenido relacionado

Similar a Appcircus Academy: Integración de Social Media en Android

Curso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App EngineCurso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App Engine
Diego López-de-Ipiña González-de-Artaza
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
Alberto Ruibal
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
Paradigma Digital
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
Manuel Pérez
 
Congreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineCongreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineNigeŗ Arce
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointgoreorti
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
Emilio Aviles Avila
 
Gadget review
Gadget reviewGadget review
Gadget review
Jesus Vera
 
Google cloud endpoints
Google cloud endpointsGoogle cloud endpoints
Google cloud endpointsGDG Lima
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Luis775803
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles Jael Vazquez
 
Prepara tus apps de SharePoint y Office 365 para el futuro
Prepara tus apps de SharePoint y Office 365 para el futuroPrepara tus apps de SharePoint y Office 365 para el futuro
Prepara tus apps de SharePoint y Office 365 para el futuro
Miguel Tabera
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles Jael Vazquez
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles Jael Vazquez
 
Creando mi primer bot application en Visual Studio 2017
Creando mi primer bot application en Visual Studio 2017Creando mi primer bot application en Visual Studio 2017
Creando mi primer bot application en Visual Studio 2017
Vicente Gerardo Guzman Lucio
 

Similar a Appcircus Academy: Integración de Social Media en Android (20)

Servicios web
Servicios webServicios web
Servicios web
 
Curso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App EngineCurso Cloud Computing, Parte 2: Google App Engine
Curso Cloud Computing, Parte 2: Google App Engine
 
LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"LabAndroid: Taller "Mi Primera Aplicación Android"
LabAndroid: Taller "Mi Primera Aplicación Android"
 
Introduccion a Android
Introduccion a AndroidIntroduccion a Android
Introduccion a Android
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
Congreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engineCongreso visión 2012 - taller introducción app engine
Congreso visión 2012 - taller introducción app engine
 
Web 2.0 ajax con SharePoint
Web 2.0 ajax con SharePointWeb 2.0 ajax con SharePoint
Web 2.0 ajax con SharePoint
 
Desarrollo android - 4 - arquitectura de aplicación
Desarrollo android  - 4 - arquitectura de aplicaciónDesarrollo android  - 4 - arquitectura de aplicación
Desarrollo android - 4 - arquitectura de aplicación
 
Gadget review
Gadget reviewGadget review
Gadget review
 
Gadget review
Gadget reviewGadget review
Gadget review
 
Google cloud endpoints
Google cloud endpointsGoogle cloud endpoints
Google cloud endpoints
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Prepara tus apps de SharePoint y Office 365 para el futuro
Prepara tus apps de SharePoint y Office 365 para el futuroPrepara tus apps de SharePoint y Office 365 para el futuro
Prepara tus apps de SharePoint y Office 365 para el futuro
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Manual de aplicaciones moviles
Manual de aplicaciones moviles Manual de aplicaciones moviles
Manual de aplicaciones moviles
 
Google apps engine
Google apps engineGoogle apps engine
Google apps engine
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Manual marichuy
Manual marichuyManual marichuy
Manual marichuy
 
Creando mi primer bot application en Visual Studio 2017
Creando mi primer bot application en Visual Studio 2017Creando mi primer bot application en Visual Studio 2017
Creando mi primer bot application en Visual Studio 2017
 

Último

665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
valerytorresmendizab
 
Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024
IES Vicent Andres Estelles
 
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁIMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
Claude LaCombe
 
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptxSEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
Osiris Urbano
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 
Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1
MauricioSnchez83
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Juan Martín Martín
 
El ensayo mexicano en el siglo XX LITERATURA
El ensayo mexicano en el siglo XX LITERATURAEl ensayo mexicano en el siglo XX LITERATURA
El ensayo mexicano en el siglo XX LITERATURA
Armando920824
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Demetrio Ccesa Rayme
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
Alejandrogarciapanta
 
El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10
Alejandrino Halire Ccahuana
 
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascónElites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Javier Andreu
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
lautyzaracho4
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
estroba5
 
Planificación Ejemplo con la metodología TPACK
Planificación Ejemplo con la metodología  TPACKPlanificación Ejemplo con la metodología  TPACK
Planificación Ejemplo con la metodología TPACK
ssusera6697f
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
20minutos
 
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
100078171
 
Biografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptxBiografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptx
ar5498718
 
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
María Sánchez González (@cibermarikiya)
 
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxxPLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
cportizsanchez48
 

Último (20)

665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
 
Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024Tema 3-3 Métodos anticonceptivos y ETS 2024
Tema 3-3 Métodos anticonceptivos y ETS 2024
 
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁIMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
IMÁGENES SUBLIMINALES EN LAS PUBLICACIONES DE LOS TESTIGOS DE JEHOVÁ
 
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptxSEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 
Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1Mauricio-Presentación-Vacacional- 2024-1
Mauricio-Presentación-Vacacional- 2024-1
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
 
El ensayo mexicano en el siglo XX LITERATURA
El ensayo mexicano en el siglo XX LITERATURAEl ensayo mexicano en el siglo XX LITERATURA
El ensayo mexicano en el siglo XX LITERATURA
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
 
El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10
 
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascónElites municipales y propiedades rurales: algunos ejemplos en territorio vascón
Elites municipales y propiedades rurales: algunos ejemplos en territorio vascón
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
 
Planificación Ejemplo con la metodología TPACK
Planificación Ejemplo con la metodología  TPACKPlanificación Ejemplo con la metodología  TPACK
Planificación Ejemplo con la metodología TPACK
 
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
Horarios y fechas de la PAU 2024 en la Comunidad Valenciana.
 
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docxRETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
RETROALIMENTACIÓN PARA EL EXAMEN ÚNICO AUXILIAR DE ENFERMERIA.docx
 
Biografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptxBiografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptx
 
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
Aprender-IA: Recursos online gratuitos para estar al tanto y familiarizarse c...
 
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxxPLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
PLAN DE CAPACITACION xxxxxxxxxxxxxxxxxxx
 

Appcircus Academy: Integración de Social Media en Android

  • 1. Workshop: Integración de Social Media en Android Appcircus Academy Alberto Alonso Ruibal alberto.ruibal@mobialia.com T: @mobialia @albertoruibal
  • 2. Quién soy Ingeniero de Telecomunicación System Manager J2EE Developer Desarrollador Android @ Mobialia Mobialia Chess, Internet Chess Club App Gasolineras España, Connect-4, Trivial, Slot Racing Martin Varsavsky's RadioMe Track my Followers for Twitter Mi blog: http://www.alonsoruibal.com Mi empresa: http://www.mobialia.com
  • 3. Más recursos para aprender Android Desarrollé la aplicación WikiPlaces como ejemplo para LabAndroid Málaga. Esta aplicación contiene varios ejemplos de cómo hacer muchas cosas comunes en Android ● Pantalla inicial con un Dashboard ● Crear pantallas de preferencias y obtener preferencias ● Usar la API de Google Maps API (incluyendo overlays) y la Location API para obtener la ubicación ● Usar servicios JSON externos ● Listas y adapters ● Lanzar aplicaciones externas con Intents ● Integración con AdMob para mostrar anuncios http://www.mobialia.com/labandroid
  • 4. ¿Por qué integrar social media? ● Obtener datos de la red social ● Conseguir visibilidad en redes sociales ● Compartir datos de la aplicación ● Simplificar el login para los usuarios de tu aplicación ● Obtener datos adicionales del usuario
  • 5. Aplicación de demostración Todos los ejemplos de esta presentación están en una aplicación de código abierto: http://www.mobialia.com/social_media_demo/
  • 6. El botón de compartir ● Muy fácil de implementar ● Lanzamos un intent de tipo “ACTION_SEND” que va a ser recibido por las aplicaciones de social media public void onShareChoose(View v) { String shareText = ((EditText) findViewById(R.id.EditText)).getText().toString(); Intent intent = new Intent(android.content.Intent.ACTION_SEND); intent.setType("text/plain"); intent.putExtra(android.content.Intent.EXTRA_TEXT, shareText); startActivity(Intent.createChooser(intent, getResources().getText(R.string.share_choose))); }
  • 7. Intents en Android Son un sistema en Android que podemos utilizar para lanzar actividades de la misma o de diferentes aplicaciones Una actividad lanza un intent El intent puede incluir datos “extra” Otra actividad recibe el intent
  • 8. Esto muesta el selector de actividad
  • 9. Especificando el componente Podemos lanzar una actividad específica (en este ejemplo lanzamos la aplicación oficial de Twitter): PackageManager packageManager = context.getPackageManager(); List<ResolveInfo> activityList = packageManager.queryIntentActivities(intent, 0); for (ResolveInfo act : activityList) { if (act.activityInfo.name.indexOf("com.twitter.") == 0) { // Check it if starts by... ComponentName name = new ComponentName(act.activityInfo.applicationInfo.packageName, act.activityInfo.name); intent.setComponent(name); startActivity(intent); ...
  • 10. Integración con Twitter ● En este ejemplo mostraremos el timeline del usuario ● Twitter utiliza autenticación OAUTH ● La respuesta de la API de Twitter es JSON ● Hay muchas opciones, yo prefiero signpost http://code.google.com/p/oauth-signpost/
  • 11. Añadiendo signpost Hay tres versiones de la librería: ● java.net.HttpUrlConnection ● Apache Commons HTTP (usamos esta) ● Jetty HTTP Client Para integrarla es necesario descargar: ● signpost-core-1.2.1.1.jar ● signpost-commonshttp4-1.2.1.1.jar Y añadirlos al build path de Eclipse
  • 12. Obteniendo una API Key de Twitter (I) Registra tu aplicación en https://dev.twitter.com/apps
  • 13. Obteniendo una API Key de Twitter (II) Una vez registrado,puedes optener el “Consumer key” y el “Consumer secret” e insertarlos en el código: OAuthConsumer oauthConsumer = new CommonsHttpOAuthConsumer( // the consumer key of this app (replace this with yours) "RFbRzd0BzYGZjrDd02ec5g" , // the consumer secret of this app (replace this with yours) "wo9lKhzwpEfdXS2Z3dO2W092W9pMoJGrc5kUsBdA");
  • 14. Interceptando la URL de callback Interceptamos la URL de callback “socialmediademo://twitter” URL modificando el AndroidManifest.xml: <activity android:name =".TwitterProviderActivity" android:label ="@string/app_name"> <intent-filter> <action android:name="android.intent.action.VIEW"></action> <category android:name="android.intent.category.DEFAULT"></category> <category android:name="android.intent.category.BROWSABLE"></category> <data android:scheme="socialmediademo" android:host="twitter"></data> </intent-filter> </activity>
  • 15. Autenticando al usuario Ahora redirigimos al usuario a la URL de autenticación, especificando una URL de callback: public static String CALLBACK_URL = "socialmediademo://twitter"; //... String authUrl = oauthProvider.retrieveRequestToken(oauthConsumer, CALLBACK_URL); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(authUrl)); // save token accessToken = oauthConsumer.getToken(); tokenSecret = oauthConsumer.getTokenSecret(); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_FROM_BACKGROUND | Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent);
  • 16. Autenticación de Twitter La página de Twitter se abre en el navegador del sistema Este ejemplo es de sólo lectura (no se puede hacer follow o enviar mensajes)
  • 17. Verificando el login del usuario Entonces, en la actividad que recibe el callback (TwitterProviderActivity): Uri uri = this.getIntent().getData(); String verifier = uri.getQueryParameter(OAuth.OAUTH_VERIFIER); oauthConsumer.setTokenWithSecret(accessToken, tokenSecret); oauthProvider.retrieveAccessToken(oauthConsumer, verifier); // save new token accessToken = oauthConsumer.getToken(); tokenSecret = oauthConsumer.getTokenSecret();
  • 18. Obteniendo los mensajes del timeline Ahora podemos lanzar peticiones contra los métodos de la API REST: String url = "http://api.twitter.com/1/statuses/home_timeline.json?count=100"; HttpGet request = new HttpGet(url); HttpClient httpClient = new DefaultHttpClient(); // sign the request oauthConsumer.setTokenWithSecret(accessToken, tokenSecret); oauthConsumer.sign(request); HttpResponse response = httpClient.execute(request);
  • 19. Interpretando la respuesta JSON La API de Android integra un parser JSON JSONArray array = new JSONArray(response); for (int i = 0; i < array.length(); i++) { JSONObject user = object.getJSONObject("user"); Update update = new Update(); update.setMessage(Html.fromHtml(object.getString("text")).toString() ); update.setUserId(user.getString("screen_name")); update.setUserName(user.getString("name")); // ...
  • 20. Finalmente mostramos el timeline En el código fuente también se puede encontrar: ● Adapter de lista para las actualizaciones de estado ● Cache de imágenes
  • 21. Integración con LinkedIn ● Muy similar a Twitter, también podemos usar libsignpost ● API XML/JSON ● Un pequeña diferencias: se necesita especificarle a signpost que LinkedIn utiliza OAUTH version 1.0a: oauthProvider.setOAuth10a(true);
  • 22. Obteniendo una API Key de LinkedIn https://www.linkedin.com/secure/developer
  • 23. Autenticación de LinkedIn Funciona como la de Twitter, abriendo el navegador del sistema También tenemos una URL de Callback
  • 24. Llamando a la API de LinkedIn Por defecto en XML, debemos enviarle el parámetro “&format=json” String response = httpRequest("http://api.linkedin.com/v1/people/~/network/updates? count=100&format=json"); if (response != null) { JSONObject object = new JSONObject(response); //...
  • 25. Resultado de LinkedIn Muestra las actualizaciones de estado de tus contactos de LinkedIn
  • 26. Integrando Google+ ● Soporte OAuth 1.0a y 2.0 (experimental) ● Podríamos usar google-api-java-client: http://code.google.com/p/google-api-java-client/ ● En nuestro ejemplo utilizamos libsignpost con OAUTH 1.0a, también es necesario especificárselo explícitamente a libsignpost
  • 27. Limitaciones de la API de Google+ ● Sólo lectura ● No podemos acceder a los “Circles” del usuario ● No se puede acceder al “Timeline” Qué se puede hacer: ● Obtener información de un usuario ● Listar las “Actividades” de un usuario ● Hacer búsquedas
  • 28. Registrar un dominio para OAUTH 1 https://accounts.google.com/ManageDomains
  • 29. Crear aplicación en Google API Console https://code.google.com/apis/console/ Registramos la aplicación para obtener una “API key”
  • 30. Configurando OAUTH para Google+ ● Se crea el Consumer OAUTH con el dominio oauthConsumer = new CommonsHttpOAuthConsumer("mobialia.com", "xxxxxxxxxxxxx"); ● Al crear el proveedor OAUTH le pasamos como parámetro una URL para el “scope” String URL = "https://www.googleapis.com/auth/plus.me"; oauthProvider = new CommonsHttpOAuthProvider( "https://www.google.com/accounts/OAuthGetRequestToken?scope=" + URLEncoder.encode(URL, "utf-8"), "https://www.google.com/accounts/OAuthGetAccessToken", "https://www.google.com/accounts/OAuthAuthorizeToken?hd=default");
  • 31. Llamando a Google+ ● La autenticación funciona igual que la de Twitter ● La key de la Google APIs console se le pasa en el momento de la llamada: String response = httpRequest("https://www.googleapis.com/plus/v1/ people/me/activities/public? key=AIzaSyBRloeHFF1G2_GafnnbhthvnYXljIi4oc4");
  • 32. Resultado de Google+ En nuestro ejemplo mostramos las “Actividades” del usuario que se ha autenticado en Google+
  • 33. Utilizar el social media para login No hace falta pedirle todos los datos al usuario Yo recomiendo Facebook: ● Más usuarios ● Más datos de cada usuario Podemos obtener datos adicionales del usuario: ● Género ● Edad ● ...
  • 34. Integración con Facebook ● Utiliza OAUTH 2.0, libsignpost no lo soporta ● Necesitamos el SDK de Facebook de Github: https://github.com/facebook/facebook-android-sdk/ ● Configuramos el SDK de Facebook como un proyecto “Librería” y añadimos una dependencia a esa librería ● Usamos la nueva Graph API
  • 35. Obteniendo una API Key de Facebook (I) https://www.facebook.com/developers/
  • 36. Obteniendo una API Key de Facebook (II) Aquí tenemos el identificador de la aplicación Necesitamos especificarle un hash de la clave de nuestro certificado: keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64
  • 37. Preparando el objeto de Facebook Y lanzando la autenticación de Facebook final int ACTIVITY_CODE = 777; final String appId = "219172308103195"; final String[] PERMISSIONS = new String[] { "user_birthday" }; Facebook fb = new Facebook(appId); fb.authorize(this, PERMISSIONS, ACTIVITY_CODE, this); // (Callback not detailed)
  • 38. Login con Facebook Abre una Actividad de Facebook solicitando los datos de autenticación
  • 39. Obtener datos del usuario de Facebook Una vez autenticados podemos lanzar peticiones, “/me” obtiene la información del usuario String res = fb.request("/me"); JSONObject object = new JSONObject(res); Log.d(TAG, object.getString("id")); Log.d(TAG, object.getString("name")); Log.d(TAG, object.getString("gender")); Log.d(TAG, object.getString("birthday"));
  • 40. Mejorando los anuncios con los datos del usuario ● Podemos especificarle a AdMob el sexo del usuario y su edad: AdRequest adRequest = new AdRequest(); adRequest.setGender(Gender.FEMALE); adRequest.setBirthday("19790129"); AdView adView = (AdView) this.findViewById(R.id.adView); adView.loadAd(adRequest);
  • 41. Resultado de Facebook La aplicación de demo muestra los datos del usuario El anuncio mostrado se puede con los datos del usuario Podemos utilizar los datos del usuario en varias partes de la application ¡Cuidado con la LOPD si los guardamos en un servidor nuestro!
  • 42. Más ideas ● Se puede utilizar una WebView para integrar Social Media ● Botón para hacer “Follow” integrando la API de Twitter ● Botón “Like” para facebook: necesita crear una página en Facebook ● “Foursquare” API integration
  • 43. Redes sociales para gaming Redes sociales específicas para compartir LeaderBoards, Achievements... ● OpenFeint ● ScoreLoop
  • 44. Preguntas... Gracias por vuestra atención! Alberto Alonso Ruibal alberto.ruibal@mobialia.com http://www.mobialia.com T: @mobialia @albertoruibal