twevelop
TRANSCRIPT
Twitter API
Qu es twitter?
Twitter API
El API en nmeros:
1,000,000 de apps registradas750,000 desarrolladoresUna 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: TODORespuesta larga: Tweet, mention, Rt , fav, (un)follow, bsquedas...
Twitter API
Cmo?
2 APIs:
RESTfull API (bsico + bsquedas)
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 autentificacin segura
Twitter API
Empezamos!
dev.twitter.com/apps/new
Twitter API
Librera del API en php
github.com/abraham/twitteroauthrequire_once("twitteroauth/twitteroauth.php");
Twitter API
Oauth
Twitter API
Twitter API
redirect.phpCreamos con nuestros tokens una url para el user
Si todo sale bien le redirigimos a Twitter
Twitter API
callback.phpVerificamos 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
Comodidad al cliente
Peticiones asncronas
Cliente(AJAX)Server
(php)
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 parmetros(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 cronolgicamente (+ reciente 1)
GET statuses/home_timeline GET statuses/mentionsGET statuses/public_timelineGET statuses/retweeted_by_meGET statuses/retweeted_to_meGET statuses/retweets_of_meGET statuses/user_timelineGET statuses/retweeted_to_userGET statuses/retweeted_by_user
Twitter API
Timelines:
[ { "coordinates": null, "favorited": false, "created_at": "Fri Jul 16 16:58:46 +0000 2010", "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 atmincas de 140 caracteres ms 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_mediaGET statuses/oembed new
Twitter API
Seach:
q Query : Se pueden usar oparadores ( AND OR NOT ...)geocodelanglocalePage: nmero de la hojaresult_typemixed: Ambos dos.recent: devuelve los resultados ms recientespopular: devuelve los resultados ms popularesRpp: tweet x hojashow_user: usuario en el campo text: user1: Hola mundo!Until: fecha mximasince_id: fecha mnimainclude_entities: incluir metadatos de cada tweet.
Twitter API
Seach:
bsqueda de twitter"hora feliz"odio OR amorodio AND amorcerveza -raz#haiku@mashablegracioso filter:linksnoticias source:twitterfeed
conteniendo "bsqueda", "de" y "twitter".conteniendo la frase exacta "hora feliz".conteniendo ya sea "odio" o "amor" (o las dos).conteniendo tanto "odio" como "amor"conteniendo "cerveza" pero no "raz".conteniendo la etiqueta "haiku".haciendo referencia al usuario "mashable".conteniendo "gracioso" y conteniendo enlaces URLs.conteniendo "noticias" y publicadas va 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
Followpost('friendships/create', array('screen_name' => Viroide));
Unfollowfriendships/destroy
Lookupfriendships/lookup
[{ "name":"Mikel Trujillo", "connections": [following","followed_by"], "id_str":"29681201", "screen_name":"Gizakor","id":29681201},...]
Twitter API
Y muchos ms mtodos:
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 permanentePuede buscar terminos o usuariosHace falta implementar un sistema de colas
Lmites:400 palabras a trackear, 5,000 usuarios
TIEMPO REAL
Twitter API
Streaming:
Mtodos:
statuses/filter
statuses/firehose
statuses/links
statuses/retweet
statuses/sample
Documentacin
Twitter API
Streaming:
statuses/filter:
URL: https://stream.twitter.com/1/statuses/filter.jsonMetodos: POSTParametros: count, delimited, follow, locations, track, stall_warningsDevuelve: stream de estados
Twitter API
Streaming:
Usaremos la librera OauthPhirehose
(No hay muchas ms opciones en php)
Si quieres hacerlo a mano: documentacin
Twitter API
Streaming:
Sobreescribimos el mtodo:
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 05Final stage
WIIIIIIIIIN!!!
Twitter API
GRACIAS POR VENIR
PREGUNTAS
O
QUEJAS
Click to edit the title text format
Click to edit the outline text formatSecond Outline LevelThird Outline LevelFourth Outline LevelFifth Outline LevelSixth Outline LevelSeventh Outline LevelEighth Outline LevelNinth Outline Level