Your SlideShare is downloading. ×
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.


Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply



Published on

Published in: Technology

  • Be the first to comment

No Downloads
Total Views
On Slideshare
From Embeds
Number of Embeds
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

No notes for slide


  • 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:
  • 4. Twittervision
  • 5. Portwiture
  • 6. Helveti-tweet
  • 7. favstar
  • 8. stweet
  • 9. BubbleTweet
  • 10. Twitterfountain
  • 11. twitpic
  • 12. filesocial
  • 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 OAuthEstandar abierto deautentificación segura
  • 19. Twitter API ¡Empezamos!
  • 20. Twitter API Librería del API en php"twitteroauth/twitteroauth.php");
  • 21. Twitter API Oauth
  • 22. Twitter API
  • 23. Twitter API redirect.phpCreamos con nuestros tokens una url para el userSi todo sale bien le redirigimos a Twitter
  • 24. Twitter API callback.phpVerificamos la cuentaCreamos el objeto $twitteroauth para “hablar” con TwitterRedirigimos al usuario al index.php
  • 25. Twitter API LEVEL 01
  • 26. Twitter API Ya estamos autentificados y ¿ahora qué?
  • 27.
  • 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. 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. ::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": "", "query": "Premios+Juventud" }, { "name": "#agoodrelationship", "url": "", "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 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. Twitter APIStreaming: Métodos: statuses/filter statuses/firehose statuses/links statuses/retweet statuses/sample Documentación
  • 51. Twitter APIStreaming: statuses/filter: URL: Metodos: POST Parametros: count, delimited, follow, locations, track, stall_warnings Devuelve: stream de estados
  • 52. Twitter APIStreaming: Usaremos la librería OauthPhirehose (No hay muchas más opciones en php) Si quieres hacerlo a mano: documentación
  • 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. Twitter API LEVEL 05 Final stage
  • 55. WIIIIIIIIIN!!!