SlideShare una empresa de Scribd logo
1 de 56
Twitter API


       ¿Qué es twitter?
Twitter API
       El API en números:
    1,000,000 de apps registradas
       750,000 desarrolladores
    Una nueva cada 1,5 segundos

    500.000.000$ en inversiones
Twitter API


      Ejemplos:
Twittervision
Portwiture
Helveti-tweet
favstar
stweet
BubbleTweet
Twitterfountain
twitpic
filesocial
Twitter API

       ¿Qué se puede hacer?

         Respuesta corta: TODO
 Respuesta larga: Tweet, mention, Rt , fav,
      (un)follow, búsquedas...
Twitter API
            ¿Cómo?
             2 APIs:

 RESTfull API (básico + búsquedas)


   STREAM API (en tiempo real)
Twitter API
        RESTful API

            Http
  GET, POST, PUT & DELETE
         Nombre = url
          Stateless
Twitter API

                      APIs
  Hay muchas api, para casi todos los lenguajes.
  (ActionScript/Flash,C++, Clojure, ColdFusion,
  Erlang, Java, JavaScript, .NET, Objective-C /
  Cocoa, Perl, PHP, Python, Ruby, Scala)

  Listado “oficial”
Twitter API

      Estado del API
Twitter API


    OAuth


Estandar abierto de
autentificación segura
Twitter API

         ¡Empezamos!


    dev.twitter.com/apps/new
Twitter API
        Librería del API en php


           github.com/abraham/twitteroauth
require_once("twitteroauth/twitteroauth.php");
Twitter API
        Oauth
Twitter API
Twitter API

                 redirect.php
Creamos con nuestros tokens una url para el user
Si todo sale bien le redirigimos a Twitter
Twitter API
                 callback.php
Verificamos la cuenta
Creamos el objeto $twitteroauth para “hablar” con Twitter
Redirigimos al usuario al index.php
Twitter API


   LEVEL 01
Twitter API
   Ya estamos autentificados y ¿ahora qué?



 dev.twitter.com/docs/api
ᄎ
Twitter API
                                    CURL

                    GET, POST, PUT, DELETE
                          Desde consola

curl --request 'POST' 'https://api.twitter.com/1/statuses/update.json' --data
'include_entities=true&status=Maybe+he%27ll+finally+find+his+keys.+%23peterfalk&trim_user=true'
--header 'Authorization: OAuth oauth_consumer_key="53a7EReUblablabla",
oauth_nonce="289e194fblablabla", oauth_signature="IAjVydC6RwORmi6GyXTbbblablabla",
oauth_signature_method="HMAC-SHA1", oauth_timestamp="1331blablabla",
oauth_token="blablabla-dOWLcGMCYxA9HYS7dblablabla", oauth_version="1.0"' --verbose
Twitter API
    Empecemos con un
                           “Hola mundo”


  $twitteroauth->post('statuses/update', array('status' => '¡Hola mundo!'));
Twitter API
              Un poquito de Ajax

   Cliente           Server
                                     Twitter
   (AJAX)            (php)




             Comodidad al cliente
             Peticiones asíncronas
Twitter API

 $.post("ajax.php",
       { 
        accion: "update_status",
        texto: $("#tweet").val()
       },
      function(data){
          var result = JSON.parse(data);
          alert(result['result']);
          $("#tweet").val("");
 });
Twitter API
       Verificar & mostrar info del usuario:


        $user_info = $twitteroauth­>get('account/verify_credentials');
        $user_name = $user_info­>screen_name;
        $user_img = $user_info­>profile_image_url;
        $user_followers = $user_info­>followers_count;
        $user_following = $user_info­>friends_count;



        echo json_encode(array('user_name'=> $user_name,
                             'user_img'=> $user_img, 
                             'user_followers'=> $user_followers,           
                             'user_following'=>$user_following));
        break;
Twitter API
   GET statuses/home_timeline


     Veamos todos los posibles parámetros
            (todos son optativos):




   count, since_id, max_id, page, trim_user, include_rts,
    include_entities, exclude_replies, contributor_details
Twitter API
                  Timelines:
     Son colecciones de Tweet ordenados
       cronológicamente (+ reciente 1º)
   GET statuses/home_timeline
   GET statuses/mentions
   GET statuses/public_timeline
   GET statuses/retweeted_by_me
   GET statuses/retweeted_to_me
   GET statuses/retweets_of_me
   GET statuses/user_timeline
   GET statuses/retweeted_to_user
   GET statuses/retweeted_by_user
Twitter API
[
    {
    "coordinates": null,
    "favorited": false,
    "created_at": "Fri Jul 16 16:58:46 +0000 2010",



                                      Timelines:
    "truncated": false,
    "entities": {
      "urls": [],
      "hashtags": [],
      "user_mentions": [
        {
          "name": "Stephanie",
          "id": 15473839,
          "indices": [
            27,
            39
          ],
          "screen_name": "craftybeans"
        }
      ]
    },
    "text": "got a lovely surprise from @craftybeans. She sent me the best tshirt ever.
http://www.flickr.com/photos/cindyli/4799054041/ ::giggles::",
    "annotations": null,
    "contributors": null,
    "id": 18700887835,
    "geo": null,
    "in_reply_to_user_id": null,
    "place": null,
    "in_reply_to_screen_name": null,
    "user": {...},
    "source": "web",
    "in_reply_to_status_id": null
  },...
]
Twitter API


   LEVEL 02
Twitter API
                          Tweets:
Los tweets son construcciones atómincas de 140 caracteres más sus
                       meta-datos asociados


                      GET statuses/:id/retweeted_by
                      GET statuses/:id/retweeted_by/ids
                      GET statuses/retweets/:id
                      GET statuses/show/:id
                      POST statuses/destroy/:id
                      POST statuses/retweet/:id
                      POST statuses/update
                      POST
                      statuses/update_with_media
                      GET statuses/oembed new
Twitter API
                             Seach:
 q Query : Se pueden usar oparadores ( AND OR NOT ...)
 geocode
 lang
 locale
 Page: número de la hoja
 result_type
      mixed: Ambos dos.
      recent: devuelve los resultados más recientes
      popular: devuelve los resultados más “populares”
 Rpp: tweet x hoja
 show_user: usuario en el campo text: “user1: Hola mundo!”
 Until: fecha máxima
 since_id: fecha mínima
 include_entities: incluir metadatos de cada tweet.
Twitter API
                                   Seach:

búsqueda de twitter           conteniendo "búsqueda", "de" y "twitter".
"hora feliz"                  conteniendo la frase exacta "hora feliz".
odio OR amor                  conteniendo ya sea "odio" o "amor" (o las dos).
odio AND amor                 conteniendo tanto "odio" como "amor"
cerveza -raíz                 conteniendo "cerveza" pero no "raíz".
#haiku                        conteniendo la etiqueta "haiku".
@mashable                     haciendo referencia al usuario "mashable".
gracioso filter:links         conteniendo "gracioso" y conteniendo enlaces URLs.
noticias source:twitterfeed   conteniendo "noticias" y publicadas vía TwitterFeed
Twitter API
                       $twitteroauth->get('trends/woeid');

                               Yahoo Where On Earth ID
[
    {
        "created_at": "2010-07-15T22:31:11Z",
        "trends": [
          {
            "name": "Premios Juventud",
            "url": "http://search.twitter.com/search?q=Premios+Juventud",
            "query": "Premios+Juventud"
          },
          {
            "name": "#agoodrelationship",
            "url": "http://search.twitter.com/search?q=%23agoodrelationship",
            "query": "%23agoodrelationship"
          },
...
Twitter API


   LEVEL 03
Twitter API
                        RT:
$twitteroauth->post("statuses/retweet/".$id);
//hace un RT y devuelve el tweet con los metadatos
$twitteroauth->post("statuses/destroy/”.%id);
//borra el RT hecho anteriormente
$twitteroauth->post(" statuses/retweets/:id”.$id);
//muestra los 100 últimos RTs
Twitter API
                     Favorite:
$twitteroauth->post("favorites/create/".$id);
// “favoritea” dicho tweet
$twitteroauth->post("favorites/destroy/”.%id);
//borra el fav hecho anteriormente
$twitteroauth->post("favorites”);
//muestra los 20 últimos favs
Twitter API
                                                Follow
                         post('friendships/create', array('screen_name' => “Viroide”));


                                             Unfollow
                                            friendships/destroy


                                               Lookup
                                           friendships/lookup

[
{
       "name":"Mikel Trujillo",
       "connections": [following","followed_by"],
       "id_str":"29681201",
       "screen_name":"Gizakor","id":29681201
},
...]
Twitter API

     Y muchos más métodos:
  Direct Messages, Friends & Followers, Users,
  Suggested Users, Favorites, Lists, Accounts,
  Notification, Saved Searches, Places & Geo,
  Block, Spam Reporting, Help, Legal
Twitter API


   LEVEL 04
Twitter API
  STREAMING
Twitter API


  STREAMING
Twitter API
Streaming:
        Abre un socket permanente
      Puede buscar terminos o usuarios
  Hace falta implementar un sistema de colas

                   Límites:
   400 palabras a trackear, 5,000 usuarios



         TIEMPO REAL
Twitter API
Streaming:

 Métodos:

     statuses/filter
     statuses/firehose
     statuses/links
     statuses/retweet
     statuses/sample

 Documentación
Twitter API
Streaming:

 statuses/filter:
 URL: https://stream.twitter.com/1/statuses/filter.json
 Metodos: POST
 Parametros: count, delimited, follow, locations,
 track, stall_warnings
 Devuelve: stream de estados
Twitter API
Streaming:

 Usaremos la librería OauthPhirehose

 (No hay muchas más opciones en php)

 Si quieres hacerlo a mano: documentación
Twitter API
Streaming:
 Sobreescribimos el método:

 public function enqueueStatus($status)
 {

     $data = json_decode($status, true);
     if (is_array($data) && isset($data['user']['screen_name']))
     {
       $filePath = '/var/www/tweets/pila.tweet';
       file_put_contents($filePath, $status);
     }

 }
Twitter API

   LEVEL 05
       Final stage
WIIIIIIIIIN!!!
Twitter API

 GRACIAS POR VENIR
      PREGUNTAS
           O

         QUEJAS

Más contenido relacionado

Similar a Twitter API: Guía completa para desarrollar aplicaciones

Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...equipo24
 
Desarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZDesarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZequipo24
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza.NET Conf UY
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbaoAsier Marqués
 
tog: Open Web, Social Networks y cintas de video
tog: Open Web, Social Networks y cintas de videotog: Open Web, Social Networks y cintas de video
tog: Open Web, Social Networks y cintas de videoAitor Rey
 
Blogs y herramientas para el periodismo digital
Blogs y herramientas para el periodismo digitalBlogs y herramientas para el periodismo digital
Blogs y herramientas para el periodismo digitalLuis Villa
 
Lorenzo Martínez - Cooking an APT in the paranoid way [RootedSatellite Valen...
Lorenzo Martínez  - Cooking an APT in the paranoid way [RootedSatellite Valen...Lorenzo Martínez  - Cooking an APT in the paranoid way [RootedSatellite Valen...
Lorenzo Martínez - Cooking an APT in the paranoid way [RootedSatellite Valen...RootedCON
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.comoctabio
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BISolidQ
 
Desarrollando con APIs
Desarrollando con APIsDesarrollando con APIs
Desarrollando con APIsArturo Garrido
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHAlejandro Esquiva Rodriguez
 

Similar a Twitter API: Guía completa para desarrollar aplicaciones (20)

APIs de medios sociales
APIs de medios socialesAPIs de medios sociales
APIs de medios sociales
 
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
 
Desarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZDesarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZ
 
Seguridad WEB - Principios básicos.
Seguridad WEB - Principios básicos.Seguridad WEB - Principios básicos.
Seguridad WEB - Principios básicos.
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Splat - Programador PHP
Splat - Programador PHPSplat - Programador PHP
Splat - Programador PHP
 
Ruby twitter bot
Ruby twitter botRuby twitter bot
Ruby twitter bot
 
tog: Open Web, Social Networks y cintas de video
tog: Open Web, Social Networks y cintas de videotog: Open Web, Social Networks y cintas de video
tog: Open Web, Social Networks y cintas de video
 
Social chess clock
Social chess clockSocial chess clock
Social chess clock
 
Blogs y herramientas para el periodismo digital
Blogs y herramientas para el periodismo digitalBlogs y herramientas para el periodismo digital
Blogs y herramientas para el periodismo digital
 
Lorenzo Martínez - Cooking an APT in the paranoid way [RootedSatellite Valen...
Lorenzo Martínez  - Cooking an APT in the paranoid way [RootedSatellite Valen...Lorenzo Martínez  - Cooking an APT in the paranoid way [RootedSatellite Valen...
Lorenzo Martínez - Cooking an APT in the paranoid way [RootedSatellite Valen...
 
tutorial de slide.com
tutorial de slide.comtutorial de slide.com
tutorial de slide.com
 
Twixer
TwixerTwixer
Twixer
 
Analizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BIAnalizando tus Redes Sociales con Power BI
Analizando tus Redes Sociales con Power BI
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Desarrollando con APIs
Desarrollando con APIsDesarrollando con APIs
Desarrollando con APIs
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Twitter
TwitterTwitter
Twitter
 
RAML
RAMLRAML
RAML
 

Último

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 

Último (20)

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 

Twitter API: Guía completa para desarrollar aplicaciones

  • 1. Twitter API ¿Qué es twitter?
  • 2. Twitter API El API en números: 1,000,000 de apps registradas 750,000 desarrolladores Una nueva cada 1,5 segundos 500.000.000$ en inversiones
  • 3. Twitter API Ejemplos:
  • 13. Twitter API ¿Qué se puede hacer? Respuesta corta: TODO Respuesta larga: Tweet, mention, Rt , fav, (un)follow, búsquedas...
  • 14. Twitter API ¿Cómo? 2 APIs: RESTfull API (básico + búsquedas) STREAM API (en tiempo real)
  • 15. Twitter API RESTful API Http GET, POST, PUT & DELETE Nombre = url Stateless
  • 16. Twitter API APIs Hay muchas api, para casi todos los lenguajes. (ActionScript/Flash,C++, Clojure, ColdFusion, Erlang, Java, JavaScript, .NET, Objective-C / Cocoa, Perl, PHP, Python, Ruby, Scala) Listado “oficial”
  • 17. Twitter API Estado del API
  • 18. Twitter API OAuth Estandar abierto de autentificación segura
  • 19. Twitter API ¡Empezamos! dev.twitter.com/apps/new
  • 20. Twitter API Librería del API en php github.com/abraham/twitteroauth require_once("twitteroauth/twitteroauth.php");
  • 21. Twitter API Oauth
  • 23. Twitter API redirect.php Creamos con nuestros tokens una url para el user Si todo sale bien le redirigimos a Twitter
  • 24. Twitter API callback.php Verificamos la cuenta Creamos el objeto $twitteroauth para “hablar” con Twitter Redirigimos al usuario al index.php
  • 25. Twitter API LEVEL 01
  • 26. Twitter API Ya estamos autentificados y ¿ahora qué? dev.twitter.com/docs/api
  • 27.
  • 28. Twitter API CURL GET, POST, PUT, DELETE Desde consola curl --request 'POST' 'https://api.twitter.com/1/statuses/update.json' --data 'include_entities=true&status=Maybe+he%27ll+finally+find+his+keys.+%23peterfalk&trim_user=true' --header 'Authorization: OAuth oauth_consumer_key="53a7EReUblablabla", oauth_nonce="289e194fblablabla", oauth_signature="IAjVydC6RwORmi6GyXTbbblablabla", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1331blablabla", oauth_token="blablabla-dOWLcGMCYxA9HYS7dblablabla", oauth_version="1.0"' --verbose
  • 29. Twitter API Empecemos con un “Hola mundo” $twitteroauth->post('statuses/update', array('status' => '¡Hola mundo!'));
  • 30. Twitter API Un poquito de Ajax Cliente Server Twitter (AJAX) (php) Comodidad al cliente Peticiones asíncronas
  • 31. Twitter API $.post("ajax.php",       {    accion: "update_status",   texto: $("#tweet").val()       }, function(data){          var result = JSON.parse(data);          alert(result['result']);          $("#tweet").val(""); });
  • 32. Twitter API Verificar & mostrar info del usuario: $user_info = $twitteroauth­>get('account/verify_credentials');         $user_name = $user_info­>screen_name;         $user_img = $user_info­>profile_image_url;         $user_followers = $user_info­>followers_count;         $user_following = $user_info­>friends_count;         echo json_encode(array('user_name'=> $user_name,      'user_img'=> $user_img,                               'user_followers'=> $user_followers,               'user_following'=>$user_following));         break;
  • 33. Twitter API GET statuses/home_timeline Veamos todos los posibles parámetros (todos son optativos): count, since_id, max_id, page, trim_user, include_rts, include_entities, exclude_replies, contributor_details
  • 34. Twitter API Timelines: Son colecciones de Tweet ordenados cronológicamente (+ reciente 1º) GET statuses/home_timeline GET statuses/mentions GET statuses/public_timeline GET statuses/retweeted_by_me GET statuses/retweeted_to_me GET statuses/retweets_of_me GET statuses/user_timeline GET statuses/retweeted_to_user GET statuses/retweeted_by_user
  • 35. Twitter API [ { "coordinates": null, "favorited": false, "created_at": "Fri Jul 16 16:58:46 +0000 2010", Timelines: "truncated": false, "entities": { "urls": [], "hashtags": [], "user_mentions": [ { "name": "Stephanie", "id": 15473839, "indices": [ 27, 39 ], "screen_name": "craftybeans" } ] }, "text": "got a lovely surprise from @craftybeans. She sent me the best tshirt ever. http://www.flickr.com/photos/cindyli/4799054041/ ::giggles::", "annotations": null, "contributors": null, "id": 18700887835, "geo": null, "in_reply_to_user_id": null, "place": null, "in_reply_to_screen_name": null, "user": {...}, "source": "web", "in_reply_to_status_id": null },... ]
  • 36. Twitter API LEVEL 02
  • 37. Twitter API Tweets: Los tweets son construcciones atómincas de 140 caracteres más sus meta-datos asociados GET statuses/:id/retweeted_by GET statuses/:id/retweeted_by/ids GET statuses/retweets/:id GET statuses/show/:id POST statuses/destroy/:id POST statuses/retweet/:id POST statuses/update POST statuses/update_with_media GET statuses/oembed new
  • 38. Twitter API Seach: q Query : Se pueden usar oparadores ( AND OR NOT ...) geocode lang locale Page: número de la hoja result_type mixed: Ambos dos. recent: devuelve los resultados más recientes popular: devuelve los resultados más “populares” Rpp: tweet x hoja show_user: usuario en el campo text: “user1: Hola mundo!” Until: fecha máxima since_id: fecha mínima include_entities: incluir metadatos de cada tweet.
  • 39. Twitter API Seach: búsqueda de twitter conteniendo "búsqueda", "de" y "twitter". "hora feliz" conteniendo la frase exacta "hora feliz". odio OR amor conteniendo ya sea "odio" o "amor" (o las dos). odio AND amor conteniendo tanto "odio" como "amor" cerveza -raíz conteniendo "cerveza" pero no "raíz". #haiku conteniendo la etiqueta "haiku". @mashable haciendo referencia al usuario "mashable". gracioso filter:links conteniendo "gracioso" y conteniendo enlaces URLs. noticias source:twitterfeed conteniendo "noticias" y publicadas vía TwitterFeed
  • 40. Twitter API $twitteroauth->get('trends/woeid'); Yahoo Where On Earth ID [ { "created_at": "2010-07-15T22:31:11Z", "trends": [ { "name": "Premios Juventud", "url": "http://search.twitter.com/search?q=Premios+Juventud", "query": "Premios+Juventud" }, { "name": "#agoodrelationship", "url": "http://search.twitter.com/search?q=%23agoodrelationship", "query": "%23agoodrelationship" }, ...
  • 41. Twitter API LEVEL 03
  • 42. Twitter API RT: $twitteroauth->post("statuses/retweet/".$id); //hace un RT y devuelve el tweet con los metadatos $twitteroauth->post("statuses/destroy/”.%id); //borra el RT hecho anteriormente $twitteroauth->post(" statuses/retweets/:id”.$id); //muestra los 100 últimos RTs
  • 43. Twitter API Favorite: $twitteroauth->post("favorites/create/".$id); // “favoritea” dicho tweet $twitteroauth->post("favorites/destroy/”.%id); //borra el fav hecho anteriormente $twitteroauth->post("favorites”); //muestra los 20 últimos favs
  • 44. Twitter API Follow post('friendships/create', array('screen_name' => “Viroide”)); Unfollow friendships/destroy Lookup friendships/lookup [ { "name":"Mikel Trujillo", "connections": [following","followed_by"], "id_str":"29681201", "screen_name":"Gizakor","id":29681201 }, ...]
  • 45. Twitter API Y muchos más métodos: Direct Messages, Friends & Followers, Users, Suggested Users, Favorites, Lists, Accounts, Notification, Saved Searches, Places & Geo, Block, Spam Reporting, Help, Legal
  • 46. Twitter API LEVEL 04
  • 47. Twitter API STREAMING
  • 48. Twitter API STREAMING
  • 49. Twitter API Streaming: Abre un socket permanente Puede buscar terminos o usuarios Hace falta implementar un sistema de colas Límites: 400 palabras a trackear, 5,000 usuarios TIEMPO REAL
  • 50. Twitter API Streaming: Métodos: statuses/filter statuses/firehose statuses/links statuses/retweet statuses/sample Documentación
  • 51. Twitter API Streaming: statuses/filter: URL: https://stream.twitter.com/1/statuses/filter.json Metodos: POST Parametros: count, delimited, follow, locations, track, stall_warnings Devuelve: stream de estados
  • 52. Twitter API Streaming: Usaremos la librería OauthPhirehose (No hay muchas más opciones en php) Si quieres hacerlo a mano: documentación
  • 53. Twitter API Streaming: Sobreescribimos el método: public function enqueueStatus($status) { $data = json_decode($status, true); if (is_array($data) && isset($data['user']['screen_name'])) { $filePath = '/var/www/tweets/pila.tweet'; file_put_contents($filePath, $status); } }
  • 54. Twitter API LEVEL 05 Final stage
  • 56. Twitter API GRACIAS POR VENIR PREGUNTAS O QUEJAS