Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.



Published on

Published in: Technology
  • Be the first to comment


  1. 1. Twitter API ¿Qué es twitter?
  2. 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. 3. Twitter API Ejemplos:
  4. 4. Twittervision
  5. 5. Portwiture
  6. 6. Helveti-tweet
  7. 7. favstar
  8. 8. stweet
  9. 9. BubbleTweet
  10. 10. Twitterfountain
  11. 11. twitpic
  12. 12. filesocial
  13. 13. Twitter API ¿Qué se puede hacer? Respuesta corta: TODO Respuesta larga: Tweet, mention, Rt , fav, (un)follow, búsquedas...
  14. 14. Twitter API ¿Cómo? 2 APIs: RESTfull API (básico + búsquedas) STREAM API (en tiempo real)
  15. 15. Twitter API RESTful API Http GET, POST, PUT & DELETE Nombre = url Stateless
  16. 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. 17. Twitter API Estado del API
  18. 18. Twitter API OAuthEstandar abierto deautentificación segura
  19. 19. Twitter API ¡Empezamos!
  20. 20. Twitter API Librería del API en php"twitteroauth/twitteroauth.php");
  21. 21. Twitter API Oauth
  22. 22. Twitter API
  23. 23. Twitter API redirect.phpCreamos con nuestros tokens una url para el userSi todo sale bien le redirigimos a Twitter
  24. 24. Twitter API callback.phpVerificamos la cuentaCreamos el objeto $twitteroauth para “hablar” con TwitterRedirigimos al usuario al index.php
  25. 25. Twitter API LEVEL 01
  26. 26. Twitter API Ya estamos autentificados y ¿ahora qué?
  27. 27.
  28. 28. Twitter API CURL GET, POST, PUT, DELETE Desde consolacurl --request POST --datainclude_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. 29. Twitter API Empecemos con un “Hola mundo” $twitteroauth->post(statuses/update, array(status => ¡Hola mundo!));
  30. 30. Twitter API Un poquito de Ajax Cliente Server Twitter (AJAX) (php) Comodidad al cliente Peticiones asíncronas
  31. 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. 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. 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. 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. 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. ::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. 36. Twitter API LEVEL 02
  37. 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. 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. 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. 40. Twitter API $twitteroauth->get(trends/woeid); Yahoo Where On Earth ID[ { "created_at": "2010-07-15T22:31:11Z", "trends": [ { "name": "Premios Juventud", "url": "", "query": "Premios+Juventud" }, { "name": "#agoodrelationship", "url": "", "query": "%23agoodrelationship" },...
  41. 41. Twitter API LEVEL 03
  42. 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. 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. 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. 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. 46. Twitter API LEVEL 04
  47. 47. Twitter API STREAMING
  48. 48. Twitter API STREAMING
  49. 49. Twitter APIStreaming: 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. 50. Twitter APIStreaming: Métodos: statuses/filter statuses/firehose statuses/links statuses/retweet statuses/sample Documentación
  51. 51. Twitter APIStreaming: statuses/filter: URL: Metodos: POST Parametros: count, delimited, follow, locations, track, stall_warnings Devuelve: stream de estados
  52. 52. Twitter APIStreaming: Usaremos la librería OauthPhirehose (No hay muchas más opciones en php) Si quieres hacerlo a mano: documentación
  53. 53. Twitter APIStreaming: 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. 54. Twitter API LEVEL 05 Final stage
  55. 55. WIIIIIIIIIN!!!