Jose Alexis Correa Valencia
@jalexiscv, hace 4 meses..
Cover 2 5DD26DAFB1840

Cree su primera aplicación de Twitter usando PHP en 8 sencillos pasos


En mi último artículo , expliqué los pasos necesarios para configurar una cuenta de desarrollador en Twitter y registrar su primera aplicación, haciendo que esto sea lo más fácil posible. Bueno, ¡es hora de ensuciarse las manos y construir esa aplicación!Si no eres desarrollador, no te preocupes, planeo hacer esto lo más fácil posible. Creo apasionadamente que todos deberían tener la oportunidad de jugar con estas cosas y liberar sus datos.Sin embargo, hago algunas suposiciones: tendrá un sitio web y podrá cargar archivos (preferiblemente a través de FTP) y su sitio web debería tener el lenguaje PHP del lado del servidor ejecutándose. Si tiene un sitio web de WordPress, la respuesta a estas preguntas debería ser sí. Si este no es el caso, entonces espero que haya algo que aún pueda aprender de este artículo.

1. Cree su primer archivo PHP

No sé qué usa para editar archivos de texto en su computadora. Puede usar el Bloc de notas o el Editor de texto de manera similar. Solía ​​usar Notepad o Dreamweaver pero ahora uso SublimeText. No importa, solo cárguelo, vamos a escribir nuestro primer script y subirlo a su sitio web. Por lo general, las páginas web simplemente se envían desde los servidores de su sitio web como HTML antiguo (el lenguaje utilizado para las páginas web). Sin embargo, los servidores pueden hacer algunas cosas mágicas antes de que se envíen utilizando lenguajes del lado del servidor. Usaremos PHP ya que es probablemente el más popular.

Necesitamos iniciar PHP en el archivo para que su servidor sepa que lo que viene es PHP y no HTML antiguo. En primer lugar, le daremos al nombre del archivo la extensión PHP ".php" en lugar del estándar ".html". También necesitamos decirle al servidor cuándo comenzar y dejar de leer como PHP. Para hacer esto, necesitamos usar abrir y cerrar etiquetas PHP como esta:

Cualquier cosa que entre estas etiquetas se ve como PHP. Ahí es donde comienza la magia. No voy a dar un tutorial para principiantes sobre PHP aquí porque hay muchos ejemplos en la web, incluida una simple introducción de PHP en el sitio web de PHP y una introducción al curso de PHP en Udemy. Por ahora, hagamos algo realmente simple y generemos un texto. Para hacer esto, usaremos la declaración "echo" en PHP. Ponemos el texto entre comillas dobles y terminamos la línea con un punto y coma (¡PHP arroja un berrinche para niños pequeños si olvida terminar una línea con un punto y coma!).

Ahora, suba esto a su sitio web. Recomiendo crear una carpeta o directorio llamado algo así como " prueba ". Esto es particularmente importante si su sitio web ejecuta WordPress ya que no queremos que estos archivos se mezclen con los de WordPress. Llame al archivo littleApp.php y cárguelo. Puedes ver mi ejemplo aquí . No es muy emocionante ... ¡todavía no de todos modos!

2. Use un script PHP Wrapper

No se preocupe si no tiene idea de qué es un script PHP Wrapper . Tampoco estoy seguro de que es, pero todo será revelado ... Como dije en mi artículo anterior, una API (abreviatura de Interfaz de programación de aplicaciones) es un sistema que permite que otras aplicaciones se comuniquen con una aplicación: recibir información de ella y enviarle información. Twitter ha tenido una API desde 2006 (no mucho después de que comenzó). Inicialmente, fue muy fácil de usar para los desarrolladores. Sin embargo, a lo largo de los años, esa API se ha vuelto más sofisticada y en junio de 2013, Twitter (en la versión 1.1 de su API) ha obligado a todas las aplicaciones que interactúan con su API a autenticarse. La autenticación básicamente significa que si desea conectarse a la API, tiene que decir quiénes son y demostrar que tiene la autoridad para acceder a los datos de ese usuario en particular.

La razón para obligarlo a autenticarse es porque Twitter quiere controlar el acceso a sus datos. Esto es en parte para crear una experiencia más unificada para los usuarios finales, pero también porque quieren obtener ingresos de la publicidad y, por lo tanto, necesitan un control estricto sobre el uso de sus datos.

Odio cuando las cosas se ponen difíciles, así que me alegré mucho cuando encontré un artículo fácil de entender en el foro de desarrolladores, Stack Overflow sobre cómo recuperar datos de Twitter usando v1.1 de su API . La respuesta aceptada a la pregunta de Stack Overflow fue escrita por un desarrollador llamado James Mallison (J7mbo) que se ha esforzado por explicar cómo hacer esto. Muchas gracias a él, ya que es la razón por la que se está escribiendo este artículo y también cómo se ha creado mi aplicación de Twitter, Twools (más sobre eso más adelante).

Tenga en cuenta que es mejor ejecutar esto en un servidor web (es decir, no localmente) y es posible que primero deba verificar algunas cosas con su host. En primer lugar, asegúrese de tener una versión moderna de PHP. Lo probé usando PHP 7.3 y superior, pero realmente tu host debería usar 5.4 o superior. También necesitará tener cURL instalado. No se preocupe por lo que es esto, pero el script de envoltura requiere que esto se conecte a la API de Twitter. La mayoría de los entornos de alojamiento deberían tener esto como estándar: consulte con su host. También es posible que desee verificar que su host tenga instalados los últimos certificados raíz para cURL, ya que he recibido informes de algunos hosts de hosting que no se molestaron en hacer esto. Si Twools no funciona, ¡tendrás que preguntarle a tu anfitrión! ¡Gracias a Tyler Hakes por profundizar en esto!

James ha desarrollado un simple "PHP Wrapper" para llamadas a la API v1.1 de Twitter. Con este contenedor, puede hacer más fácilmente llamadas a la API y luego interactuar con los datos. Puede ver el archivo en este repositorio de GitHub y descargarlo desde aquí GitHub .

Una vez que haya descargado el archivo, descomprímalo y cargue el archivo ' TwitterAPIExchange.php ' en la misma carpeta que su archivo ' littleApp.php '. Ahora realmente estamos listos para crear algo de magia API de Twitter usando PHP. ¿Estás listo? ¡Vamonos!

3. Ingrese sus tokens

Ahora que tiene el script PHP Twitter Wrapper en el mismo directorio que su archivo littleApp.php, podemos usarlo para ayudarnos a acceder a la API de Twitter. Para hacer esto, debemos incluir el script de contenedor de Twitter utilizando la función ' require_once '. Una vez que hayamos hecho eso, debemos configurar nuestros tokens de acceso agregándolos a la matriz $ settings (elimine los bits " YOUR_OAUTH_ ", etc. y reemplácelos con sus tokens). No se preocupe demasiado por esto por ahora, todo lo que necesita saber es que el contenedor PHP usará estos tokens para conectarse a la API de Twitter.

4. ¡Decide qué llamada hacer!

Ahora tenemos que decidir qué información queremos solicitar de Twitter. ¿Quieres obtener los tweets de tu línea de tiempo? ¿Qué hay de alguien más? ¿Quizás los tweets de una de tus listas de Twitter? ¿O incluso hacer una búsqueda en Twitter? Bueno, todo es muy fácil: todo lo que necesita hacer es obtener la URL de la documentación de la API de Twitter . Al principio, puede parecer un poco desalentador, así que he incluido algunos aquí para que comiences ...

  • Cronología del usuario: https://api.twitter.com/1.1/statuses/user_timeline.json - Todos sus tweets o los tweets del usuario que especifique.
  • Menciones: https://api.twitter.com/1.1/statuses/mentions_timeline.json Todos los tweets en los que otro usuario de Twitter te menciona.
  • Cronología de inicio: https://api.twitter.com/1.1/statuses/home_timeline.json - Todos los tweets de las personas que sigues
  • Búsqueda de Twitter: https://api.twitter.com/1.1/search/tweets.json Una búsqueda en Twitter con la consulta que especifique.

Necesitamos proporcionarle al URL del contenedor PHP Twitter para que pueda hacer la solicitud de API correcta para nosotros. Para hacer esto, necesitaremos crear una cadena con la URL. Llamemos a esa cadena $url:

Además de la URL y sus tokens de API, Twitter a veces necesita un poco más de información para continuar. Esa información depende del recurso de Twitter que solicite. Si no especifica ninguna otra información con la solicitud de línea de tiempo del usuario, le devolverá sus tweets. Sin embargo, puede indicarle a la API de Twitter que devuelva los tweets de otro usuario enviando su ID o nombre de usuario.

5. Obtener y/o Publicar

Cuando desee visitar un sitio web, su navegador realiza una solicitud al servidor del sitio web. Este tipo de solicitud utiliza una forma de conexión (o un "protocolo") llamado "Protocolo de transferencia de hipertexto" (o HTTP), que fue inventado por primera vez a principios de la década de 1990 por Tim Berners-Lee y su equipo. Realmente no necesita saber esto, pero creo que es útil para comprender las diferentes formas en que podemos conectarnos a la API de Twitter. En HTTP podemos solicitar información de diferentes maneras.

El más popular es "obtener" información de un servidor utilizando el método " GET ". Con " GET " solicitamos la información enviando la URL y otra información. Esta otra información se puede agregar al final de la URL colocando un signo de interrogación y colocando la información después de eso. Por ejemplo:

También podemos agregar más bits de información utilizando el símbolo de ampersand ("&") ...

El otro método popular se llama " POST " y normalmente se usa cuando envía un formulario. Debido a que encadenar toda la información contenida en un formulario al final de una URL no sería práctico (¡solo piense cuánto tiempo podría ser la URL!), La información adicional se envía por separado a la URL.

Existen otros métodos que se usan con mucha menos frecuencia: HEAD , OPTIONS , PUT , DELETE , TRACE y CONNECT , no nos preocupemos por ellos por ahora.

Twitter acepta los métodos GET y POST , pero en general, solicita que los datos de solo lectura (como obtener tweets) sean solicitados por el método GET y que los datos de escritura (como enviar un tweet) se hagan por el método POST . Hay una excepción en el sentido de que, si su cadena de solicitud va a ser muy larga, es posible que desee utilizar POST aunque solicite datos de solo lectura. Esto se debe a que la URL podría terminar siendo demasiado larga.

Para este artículo, solo vamos a solicitar información, así que sigamos con GET .

Así que le hemos dado al contenedor de Twitter nuestros tokens de acceso y la URL para la llamada a la API; ahora debemos decirle que queremos usar el método GET . Para hacer esto, configuramos otra variable para que el contenedor PHP Twitter pueda hacer la solicitud correcta. Llamemos a esa cadena $ requestMethod:

También necesitamos establecer la información GET también. Podríamos agregar eso a la URL, pero para el PHP Twitter Wrapper, vamos a agregar esa información por separado. Recomiendo revisar cada recurso de la API de Twitter en la documentación, ya que cada recurso tiene diferentes parámetros que puede agregar. Para el user_timeline one, podríamos agregar screen_name y contar. El parámetro screen_name nos permite pedirle a la API de Twitter los tweets de otro usuario y el parámetro count le dice a twitter cuántos resultados queremos que nos devuelvan. En este caso, queremos recibir los últimos 20 tweets del usuario de Twitter, @iagdotme. En este caso, la cadena GET sería:

Para entregar esto al contenedor PHP Twitter, configurémoslo en una cadena- $ getString:

6. Conéctese a la API de Twitter

¡Espero que estés emocionado porque ahora hemos llegado al punto en que podemos hacer esa llamada a Twitter! Recapitulemos. Hemos ...

  1. Subió el contenedor PHP y su archivo PHP de prueba a un directorio / carpeta en su sitio web
  2. Incluyó el script de envoltura PHP al comienzo de su script PHP de prueba
  3. Establezca sus tokens de acceso en la matriz $settings
  4. Establecer la URL para la solicitud de API
  5. Establezca el método HTTP para la solicitud como GET
  6. Establezca los bits adicionales de información que Twitter necesita para la solicitud (nombre de pantalla y recuento) en la cadena $ getfield

Ahora necesitamos hacer la llamada usando el PHP Twitter Wrapper. Para hacer esto y generarlo, evocamos la clase TwitterAPIExchange con los tokens de acceso y le damos todos los bits adicionales de información ($ getField, $ url y $ requestMethod) ...

Si ejecuta este archivo desde su navegador, verá la solicitud de Twitter. Está en un formato llamado JSON. No se preocupe por eso por ahora, lo principal es que tenemos la información. Aquí está el código que tenemos hasta ahora. Siéntase libre de copiar, cargar y ejecutar. Recuerde que los códigos oauth y consumer los obtiene en la siguirne te direccion de twitter https://dev.twitter.com/apps/.

Puede ver un ejemplo de la salida aquí (tenga en cuenta que esto es solo un caché de la salida ya que no quiero hacer una llamada a la API cada vez que alguien ve el archivo).

7. Haz cosas con los datos

Entonces, ahora tenemos los datos de Twitter. ¿Pero qué hacemos con eso? ¡Está en este formato extraño llamado JSON! Bueno, algunos de ustedes tendrán experiencia con JSON, pero sé que muchos de ustedes no. La razón por la que Twitter elige esto sobre otros formatos (como XML y RSS) es que puede ser más fácil trabajar con él y permite un conjunto de datos más rico. Eso es definitivamente cierto: Twitter nos da mucha bondad en la salida de JSON, pero puede ser desalentador al principio.

Bueno, hay una función PHP que puede rescatarnos llamada json_decode . Convierte o decodifica una cadena JSON en un objeto o una matriz. Para este ejercicio, vamos a convertir la cadena JSON en una "matriz asociativa". Una matriz es una cadena especial que contiene más de un valor. En una matriz asociativa, puede dar a cada valor un nombre o clave. Esto facilita la recuperación de ese valor más adelante. En nuestro caso, podemos pedirle a la matriz que nos dé el texto del tweet o el nombre de usuario. Para obtener más información, eche un vistazo a este sencillo artículo sobre matrices de W3 Schools.

Entonces, en lugar de generar la cadena JSON, convirtámosla en una matriz asociativa usando la función json_decode:

Notarás que esto es casi lo mismo que antes, excepto que lo hemos envuelto con json_decode y establecemos $ assoc en TRUE para convertir el JSON en una matriz asociativa.

No podemos simplemente generar una matriz usando echo ya que tiene más de un valor. Por ahora, produzcamos la matriz usando la función print_r. Para que sea más fácil de leer, lo envolveremos en etiquetas -PRE- para que sea texto preformateado (es decir, ancho fijo).

En caso de que Twitter devuelva un error, es importante ser notificado de esto. Twitter devuelve cualquier error en la matriz de errores, por lo que podemos verificarlo. Si existe, podemos devolver el mensaje de error y detener el script. Gracias a Jay (en los comentarios) por una actualización en esta línea:

Aquí está el código completo hasta ahora ...

Puede ver un ejemplo de la salida aquí.

8. ¡Eso es todo!

Ahora que tenemos nuestros datos de la forma en que los queremos, podemos comenzar a acceder a la información sobre cada tweet. Una forma de hacerlo es recorrer la matriz y pedir cada bit de información. Dado que estos son nuestros datos de la línea de tiempo del usuario, podemos solicitarlos:

  • created_at: Fecha y hora del tweet.
  • favorited: Si el tweet fue favorito o no.
  • id_str: El ID del tweet.
  • text: El texto del tweet (solo los primeros 140 caracteres).
  • full_text: El texto del tweet (los 280 caracteres, pero solo si usa la opción tweet_mode = extended en la consulta).
  • retweet_count: Cuántas veces se retuiteó el tweet.

y sobre el usuario que tuiteó el tweet:

  • name: el nombre del usuario.
  • profile_image_url: La URL de la foto de perfil del usuario.
  • created_at: Cuando se creó su cuenta (cuando se unieron por primera vez a Twitter).
  • location: su ubicación (como se establece en su perfil)
  • url: El enlace en su perfil.
  • name: su nombre completo (como aparece en su perfil).
  • list_count: en cuántas listas de Twitter están.
  • followers_count: cuántos seguidores tienen.
  • protected: ¿Están protegidos sus tweets?.
  • statuses_count: ¿Cuántos tweets han enviado?.
  • friends_count: a cuántas personas siguen (amigos).
  • screen_name: su nombre de pantalla.

Esa no es una lista exhaustiva: para todas las entidades, eche un vistazo a la documentación de Twitter para ver los plazos de los usuarios . Para este ejercicio, vamos a recorrer nuestra matriz asociativa y generar toda la información. No se verá bonito, pero ese no es el objetivo de este ejercicio.

PHP tiene una pequeña y gran función que nos ayuda a recorrer una matriz. Se llama foreach (). Para nuestros ejercicios lo usaremos así:

La función foreach recorre la matriz y cada vez establece $ items en el valor actual. Entonces podemos hacer cosas con ese valor antes de que el ciclo continúe. Debido a que es una matriz asociativa, podemos acceder a las claves con mucha facilidad utilizando las claves proporcionadas por Twitter (por ejemplo, "texto", "created_at", "ubicación"). Podemos generar la información del tweet de esta manera:

La información sobre el usuario que tuiteó el tweet se almacena en una matriz a la que podemos acceder en el bucle usando $ items ['user']. Por ejemplo, si queremos su nombre de pantalla, usaríamos $ items ['user'] ['screen_name']. Aquí hay una versión ampliada de lo anterior:

Actualización: dado que Twitter pasó de solo 140 caracteres por Tweet a 280, ya no puede confiar en obtener el Tweet completo de $items['text'] . Deberá usar

Ahora, para ser un poco más astuto, ¿por qué no te permitimos mostrar los tweets de otro usuario? Al agregar la siguiente línea, podemos verificar si ha agregado una cadena al final de su URL (¡nuestra pequeña solicitud GET!) Para establecer un nombre de pantalla diferente. Y, debido a que hay algunos hackers desagradables, también querremos verificar y eliminar los caracteres no alfanuméricos que quieran agregar.

Si agrega? User = your_screen_name a la URL de su script, podemos usarlo para establecer el nombre de usuario en nuestra solicitud de API. Si no está configurado, usará el predeterminado (tendrá que cambiar "iagdotme" arriba por su nombre de usuario). Además de eso, tendremos que cambiar otra línea en nuestro script, la cadena $ getField, para que podamos configurar el usuario.

Ahora, si ejecuta el script como antes, generará sus tweets. Si agrega? User = lifehacker al final de su URL, le dará los tweets de @lifehacker.

Tenga en cuenta: no recomiendo configurar estas variables utilizando la cadena GET en un sitio público. Todo podría ser maltratado fácilmente por piratas informáticos. Esto lo pondrá en funcionamiento rápidamente, pero le recomiendo codificar las variables o realizar algunas comprobaciones de seguridad en las variables GET antes de usarlas.

Aquí está la versión completa de nuestro script:

Eso es todo. Has creado tu primera aplicación de Twitter. OK, no es el más elegante o útil, pero es un comienzo. No vamos a terminar todo aquí, porque en mi próximo artículo les mostraré mi primera aplicación, Twools, y estoy realmente entusiasmado con eso. Un enorme agradecimiento a James Mallison que desarrolló el script PHP Twitter Wrapper y se tomó el tiempo para explicar las cosas en Stack Exchange. Espero que hayas podido comenzar tu viaje en el mundo API de Twitter. ¡Que te diviertas!

Fuentes
    Comentario
    Image
    Comentarios