Buceando en la API de Twitter

El asombroso crecimiento de Twitter solo se compara con su API intuitiva y amigable para el desarrollador. En esta segunda parte de la serie, aprenderemos más sobre la API de Twitter y cómo trabajar con ella..

Demasiada abstracción nunca es algo bueno.

En esta era de la Web 2.0, las aplicaciones web que tienen una API intuitiva y fácil de usar tienen una clara ventaja, ya que les permite a los desarrolladores explotar y construir la plataforma y, por lo tanto, capturar a más usuarios. A medida que avanzamos hacia la web social y los mashups, una buena API ya no es una buena adición: es absolutamente necesaria. Y recuerda, demasiada abstracción nunca es algo bueno. Si bien hay una serie de kits de API para simplificar el trabajo con la API en cuestión, ¿no sería genial saber qué está pasando realmente debajo del capó? ¿No sería emocionante deconstruir el vudú real entre el kit y la API? Si lo pensé!


Antes de que comencemos

Para cada funcionalidad, le mostraré cómo lograrlo de dos maneras: la primera con un lenguaje del lado del servidor, PHP en este caso, y la segunda con solo un lenguaje del lado del cliente, JavaScript. Cada implementación funcionará por separado y logrará la funcionalidad requerida. Siéntase libre de mezclar y combinar estas soluciones para crear un híbrido. Los ejemplos de JavaScript usarán JSON como el formato para la carga útil, mientras que para el ejemplo de PHP elegí XML.


Fundamentos de la API de Twitter

Lo primero que debe saber sobre la API de Twitter es que es RESTful. Para cortar la jerga, significa que tiene acceso a las URL apropiadas utilizando las solicitudes GET o POST para modificar, solicitar o manipular los datos expuestos por la API.

Hay tres API de Twitter separadas en realidad.

  • La API normal basada en REST
  • La API de búsqueda
  • La API de Stream

Cada una de estas API tiene su propio conjunto de funcionalidades, peculiaridades, ventajas y desventajas..

API REST

Los métodos REST constituyen el núcleo de la API de Twitter, y están escritos por los desarrolladores en el propio Twitter. Permite a otros desarrolladores acceder y manipular todos los datos principales de Twitter. Usaría esta API para hacer todas las cosas habituales que querría hacer con Twitter, incluida la recuperación de estados, la actualización de estados, la visualización de la línea de tiempo de un usuario, el envío de mensajes directos, etc..

API de búsqueda

La búsqueda API es en realidad una creación de los chicos de Summize Inc, una compañía que Twitter adquirió para su API. La API de búsqueda te permite mirar más allá de ti y de tus seguidores. Necesita esta API si desea ver temas de tendencias, etc..

API de transmisión

Finalmente tenemos la API de flujo. Esta API permite a los desarrolladores probar enormes cantidades de datos en tiempo real. Dado que esta API solo está disponible para usuarios aprobados, no vamos a revisar esto hoy.


Autenticación y todo lo que Boohockey.

Se puede acceder libremente a los datos públicos sin una clave API. Cuando se solicitan datos privados y / o datos específicos del usuario, Twitter requiere autenticación. Puede autenticarse con Twitter usando cualquiera de los dos métodos.

Autenticación básica

Este es el método predeterminado de autenticación que Twitter lanzó inicialmente y todavía usa. En este método, pasa el nombre de usuario y la contraseña como cadenas codificadas Bse64 en el encabezado de la solicitud HTTP. Una solicitud GET de muestra se vería así.

GET /somefolder/index.html HTTP / 1.1 Host: net.tutsplus.com Autorización: Basic dXNlcm5hbWU6cGFzc3dvcmQ =

Parece un poco complicado ¿no? Dejame explicar. Las dos primeras líneas son parte de una solicitud GET estándar. La tercera línea es donde sucede toda la magia. Nos aseguramos de que el servidor sepa que estamos usando autenticación básica para autenticarse con él, y luego pasamos la cadena codificada base 64 de usuario Contraseña como el valor. El servidor puede decodificar las credenciales, verificarlas y proporcionar acceso si todo coincide..

Twitter que admite autenticación básica es probablemente una de las razones por las que se hizo tan grande, ya que permitió que una multitud de desarrolladores se desarrollaran para la plataforma, ya que la barrera de entrada es relativamente baja. La autenticación básica es suficiente para recuperar todas las partes de la API.

OAuth

Twitter comenzó a admitir OAuth en el segundo trimestre de 2009. Los usuarios que utilizan la aplicación habilitada para OAuth no necesitan divulgar sus contraseñas al programa y también pueden delegar el control al programa con múltiples niveles de acceso. Sin embargo, no veremos la implementación de OAuth en Twitter hoy. OAuth y la implementación de su flujo de trabajo es un tema bastante complejo y requiere un artículo propio. Prefiero saltarme OAuth para este artículo en lugar de tirar algunas explicaciones a medias y escribir código basado en esas explicaciones.


Precaución

"Twitter solo te permite hacer un número predefinido de llamadas a su API".

Antes de profundizar en la parte de codificación, necesito aclarar una cosa: Twitter solo te permite hacer un número predefinido de llamadas a su API. El límite de la API REST es de 150 por hora, mientras que el límite de la API de búsqueda no se ha revelado hasta el momento. Para las llamadas autenticadas, la llamada se deduce del límite del usuario autentificado, mientras que para las llamadas no autenticadas se deduce de la cuota del IP que llama.

Recuerde, cuando desarrolle una aplicación, asegúrese de guardar en caché la información o respetar el límite y mantenerse dentro de ella. Si cree que el límite preestablecido es insuficiente para su aplicación, siempre puede solicitar una lista blanca.


Las tareas más comunes

En lugar de ver una serie de métodos que probablemente nunca usará, he decidido mostrarle cómo hacer las tres tareas más comunes.

  • Recuperando tu estado
  • Actualizando tu estado
  • Buscando en twitter

Creo que este es un subconjunto adecuado de la API que cubre directamente para qué se utiliza la API sin extenderse demasiado, cubriendo una tonelada de métodos. Con eso fuera del camino, comencemos!


Recuperar su estado

La primera funcionalidad que veremos es mostrar el estado de un usuario. Este es el uso más popular de la API si un desarrollador web desea mostrar el estado de un usuario determinado sin recurrir a una insignia de Twitter.

Método PHP # 1: Recuperación Directa

 estado-> texto. ' - '.date ("g: i: A D, F jS Y", strtotime ($ response-> status-> created_at)); ?>

El primer método utiliza PHP. Es un método relativamente simple en el que simplemente tomamos el archivo XML específico del usuario y luego lo analizamos para mostrar el estado actual.

Primero convertimos el archivo XML en un objeto para que podamos atravesarlo fácilmente usando la extensión SimpleXML, que viene estándar con PHP. Ahora que el objeto ha sido creado, simplemente encontramos el estado nodo e imprimir el texto de estado y el tiempo de creación.

Recuerda, esto solo muestra el estado actual del usuario. Si desea una lista de actualizaciones recientes, vea a continuación.

Método PHP # 2: cURL

cURL es una herramienta de línea de comandos y viene habilitada en la mayoría de los servidores alojados. Para citar Wikipedia:

En informática, cURL funciona como una herramienta de línea de comandos para transferir archivos con sintaxis de URL.

Es una biblioteca diseñada para permitir a los usuarios conectarse a diferentes tipos de servidores usando diferentes protocolos. El uso de cURL es el método de elección para todas las bibliotecas de Twitter y usaremos el mismo.

 estado como $ estado) echo $ estado-> texto. '
por '. $ status-> user-> screen_name.' en '.date ("g: i: A D, F jS Y", strtotime ($ status-> created_at)).'

'; ?>

Dejame explicar. Primero, asignamos nuestro nombre de usuario y contraseña a las variables separadas para usarlas más adelante. A continuación, establezco la URL al valor mencionado anteriormente. Dado que el método requiere autenticación, enviamos nuestro nombre de usuario y contraseña.

A continuación, ejecutamos nuestra llamada y almacenamos la respuesta en una variable separada. Luego lo convertimos en un objeto XML válido y luego analizamos los datos, imprimiendo el estado y cuándo se publicó..

He formateado los datos y el tiempo para lucir como quiero. Si quieres fechas y horarios de lujo como hace 3 horas o Hace 12 dias, O bien, deben buscar un fragmento o codificar uno. Twitter solo devuelve tiempo y datos con formato normal.

Recibirás una salida, similar a esta:

 Soy estúpido. No usé un IDE y perdí una coma desperdiciando 110 minutos. Recuérdame que no intente depurar cuando tengo sueño o estoy cansado. a las 6:01 pm del viernes 14 de febrero de 2010 Inundación de tráfico. : O debo haber presupuestado para tantos visitantes. Argh! Espero que nada se rompa. a las 8:51 pm del jueves 13 de febrero de 2010

JavaScript

Usar JavaScript para mostrar su estado es la forma más elegante de avanzar, ya que puede cargarlo de forma asíncrona después de que la página se haya cargado, lo que significa que, incluso si Twitter está inactivo o llega tarde, su sitio funciona de la misma manera..

Vamos a utilizar el método ajax de jQuery para hacer todo nuestro trabajo sucio hoy.

 $ .ajax (url: "http://twitter.com/statuses/user_timeline/userid.json?callback=?", dataType: "json", timeout: 15000, success: function (data) $ ("# datos "). html (" Datos obtenidos exitosamente! 
"); para (i = 0; i"+ datos [i] .text) +"

"; $ (" # data "). append ("

"+ datos [i] .created_at +"

");, error: function () alert (" Failure! ");,);

Una vez más, un gran trozo de código, pero desglosado, es realmente simple. Utilizamos la función AJAX de nivel más bajo de jQuery en lugar del método getJSON, ya que la llamada de nivel bajo parece ser más versátil.

En primer lugar, definimos la URL y el tipo de datos. También agregamos una función de devolución de llamada a la URL para eludir la restricción de dominio cruzado en la mayoría de los navegadores. Sin esta devolución de llamada, nuestro script no se ejecutaría; solo devolvería un error y saldría.

He elegido no autenticarme, porque estamos especificando una ID en la URL y, por lo tanto, no necesitamos autenticación, eso y porque la autenticación básica no es realmente segura para la información confidencial. No desea enviar su contraseña a través de una línea insegura.

Finalmente, la función de éxito que se llama cuando no se encuentran errores. Simplemente analizamos el objeto JSON devuelto e imprimimos el texto y el tiempo de creación.. #datos Es solo un contenedor donde ponemos todos nuestros datos..

Una nota rapida

Este código es la plantilla para todos sus métodos que acceden a datos. Se requiere un cambio mínimo para modificarlo para que funcione con otros métodos de API.

Para el ejemplo de PHP, todo lo que deberías hacer es cambiar el valor de la URL para que apunte a un nuevo método, y debes hacerlo casi todo. Si el método requiere parámetros, simplemente agréguelos directamente a la propia URL. Simple como eso.

Lo mismo con el ejemplo de JavaScript. Todo lo que necesitas hacer es cambiar la URL que solicitan los métodos, y debes hacerlo. Asegúrese de obtener solo datos públicos con el método JavaScript.

Recuerde, este código es la base para todos sus otros métodos que recuperan datos. Esto incluye métodos para obtener sus mensajes directos, líneas de tiempo, amigos, seguidores y los tweets mencionados. Simplemente cambie la URL, agregue un parámetro según sea necesario, ¡y ya está todo listo! Fácil no?


Actualizando tu estado

Con cualquier aplicación de Twitter que esté creando, permitir que los usuarios actualicen su estado a través de ella es una tarea fácil. Recuerde, anteriormente las aplicaciones que usaban autenticación básica podían usar una cadena de origen personalizada para todos los tweets enviados desde su aplicación. Ahora, implementar OAuth es la única forma de obtener una cadena personalizada. En resumen, si desea que todos los tweets enviados desde su aplicación tengan un enlace a su aplicación, use OAuth. Con eso fuera del camino, veamos el código..

PHP

 

Podemos usar cURL con la misma facilidad para publicar en Twitter. El código es casi el mismo que antes, excepto que cambiamos la URL a la apropiada. Además, nos aseguramos de que la publicación esté habilitada y configuramos los campos para publicar. El método API requiere parámetros de estado, por lo que establecemos el valor de la variable de estado en este parámetro.

Recuerde asegurarse de que el texto a publicar esté codificado en UTF-8. De lo contrario, nos encontraríamos con errores innecesarios..

Ahora guardamos la respuesta para usarla más adelante. En este ejemplo, he optado por no hacer nada. Pero en una aplicación práctica, definitivamente querrá mostrar un mensaje de éxito / error y / o mostrar la respuesta.

JavaScript

Publicar una actualización de estado en Twitter usando solo JavaScript parece ser imposible en este momento ya que no hay manera de pasar el ID y la contraseña del usuario. Con Flickr, esas credenciales se pasan como parte de la solicitud POST en sí. Con Twitter, estos datos deben enviarse en los encabezados HTTP, y no parece haber una forma de hacerlo.

Incluso sin tener en cuenta el hecho de que no puede enviar credenciales al servicio, sigue existiendo el problema de no poder realizar solicitudes POST entre dominios con el objeto XMLHttp. Estos dos puntos hacen que los métodos API que requieren una solicitud POST un estricto no-no con JavaScript.

En caso de que esté interesado, una publicación exitosa le proporciona esta respuesta..

    Vie 14 de agosto 21:31:53 +0000 2009 3316091255 Probando cURL con la API de Twitter API falso   falso   18118645 Tony / Siddharth lordtottuu India Gamer, desarrollador, diseñador web, escritor, geek.  http://s3.amazonaws.com/twitter_production/profile_images/300532536/NVAGSoNIpS_o5XxbmB4pl-boGheY6JBASaiLiieGIAO6JTitHRMNJa6ktCPRMQW_normal.jpg http://ssiddharth.com falso  

Una nota rapida

Las técnicas de código discutidas anteriormente consisten en la base para todos sus datos que envían datos a Twitter. Esto incluye métodos que le permiten seguir / dejar de seguir a alguien, enviar mensajes directos, crear favoritos, bloquear personas, etc..

Lo único que debe hacer es cambiar estas URL, ver si requieren parámetros adicionales y agregarlas según sea necesario. Nada mas requerido.


Buscando en twitter

Permitir que los usuarios busquen información en Twitter es potencialmente una necesidad importante de una aplicación. Para este propósito, podemos usar la API de búsqueda para consultar Twitter..

PHP

 los resultados como $ resultado) eco $ resultado-> texto; ?>

El código anterior le permite buscar en Twitter los tweets que hacen referencia a Envato. Como de costumbre, cambiamos la URL para que apunte al método API correcto y continúe. Dado que este método solo está disponible en formato JSON o ATOM, elegí ir con JSON.

He usado PHP incorporado json_decode Función para convertirlo en un objeto para que podamos analizar la respuesta fácilmente. En este ejemplo, solo he impreso los tweets ellos mismos. En sus aplicaciones, probablemente querrá mostrar más. A continuación se muestra una respuesta de muestra..

 [texto] => @nsethi echa un vistazo a http://www.envato.com/ si quieres saber más acerca de esto ... lo publicaré más tarde. [to_user_id] => 1273919 [to_user] => nsethi [from_user] => thinklime [id] => 3315720513 [from_user_id] => 33020944 [iso_language_code] => en source] => Tweetie [profile_image_url] => http: // s3.amazonaws.com/twitter_production/profile_images/201032569/idTwitter_normal.jpg [created_at] => Fri, 14 Aug 2009 21:10:42 +0000

Como puede ver, hay mucha información disponible sobre el usuario y el tweet en sí. Siéntete libre de mezclar y combinar.

JavaScript

 $ .ajax (url: "http://search.twitter.com/search.json?q=somestring&callback=?", dataType: "json", timeout: 15000, success: function (data) // parse data aquí, error: function () alert ("Failure!");,);

Como de costumbre, usamos el método ajax para hacer ping al servicio de búsqueda de Twitter. Al igual que en el ejemplo anterior, hemos incluido una función de devolución de llamada para superar la restricción de dominio cruzado.

Una respuesta de muestra, tomada directamente de Twitter, parece que sí.

 "results": ["text": "@ twitterapi http: \ / \ / tinyurl.com \ / ctrefg", "to_user_id": 396524, "to_user": "TwitterAPI", "from_user": "jkoum", "id": 1478555574, "from_user_id": 1833773, ... truncado ...], "since_id": 0, "max_id": 1480307926, "refresh_url": "? since_id = 1480307926 & q =% 40twitterapi", "results_per_page": 15 "" next_page ":"? page = 2 & max_id = 1480307926 & q =% 40twitterapi "," completed_in ": 0.031704," page ": 1," query ":"% 40twitterapi "

Como nota al margen, el método de búsqueda se puede utilizar de varias maneras realmente.

  • ?q = Envato - Busca tweets que contengan la cadena Envato.
  • ?q = # Envato - Búsquedas de hashtags de envato.
  • ?frase = Envato + mercado - Busca tweets que contengan la frase Envato marketplace.
  • ?q = de: NETTUTS - Devuelve todos los tweets de NETTUTS.
  • ?q = a: NETTUTS - Devoluciones para todos los tweets a NETTUTS.

¿Por qué otros métodos no están cubiertos?

Decidí limitarme a mostrar cómo leer y escribir en un servicio usando su API. De esta manera, puedo enfocarme solo en esos métodos específicos. Y también porque la mayoría de los métodos se basan en estos conceptos básicos. Si desea devolver la línea de tiempo de un amigo, simplemente cambiaría la URL y analizaría la respuesta con un mínimo esfuerzo.

Lo mismo ocurre si desea enviar un mensaje directo a otro usuario o mencionar a otro usuario. Los fundamentos de la publicación sigue ahí. Solo necesita agregar uno o dos parámetros para que todo suceda. No tiene sentido cubrir todo eso cuando puedo explicar los conceptos básicos con mayor claridad..


Conclusión

Espero que hayas aprendido más sobre cómo trabajar con la API de Twitter hoy. Como siempre, avíseme, a través de los comentarios, si necesita ayuda.!