twevelop

Download Twevelop

If you can't read please download the document

Upload: jon-eguiluz

Post on 16-Apr-2017

1.829 views

Category:

Technology


0 download

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

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