Utilizando Twitter OAuth con PHP

Twitter OAuth es un protocolo de autenticación que permite a los usuarios conectarse con nuestro WebSite mediante una confirmación previa en Twitter.

En estos días son muchas las Web que usan este método para el registro de usuarios de forma más fácil.

En este tutorial explicaremos detalladamente como lograr implementar esta funcionalidad a nuestro sitio Web.

Paso 1: Crear una aplicación en Twitter.

Para crear una aplicación en Twitter deberán loguearse e ingresar al enlace:

Settings > Connections

En el modulo derecho podremos ver un enlace pequeño para registrar aplicaciones, posteriormente le dan a “Register new application”.

Prestemos atención al formulario Demo.

  • Application Name: Este sera el texto que aparecera en el from del Tweet.
  • Application Website: El enlace del from en el Tweet.
  • Callback URL: Sera la url a donde redireccionara Twitter despues de loguearte.
  • Default Access type: Esto servira para interactuar con Twitter desde nuestra Web (Tweetear, seguir a otros, enviar mensajes privados, etc).

Luego del registro exitoso, nos mostraran la configuración que luego necesitaremos para integrar la aplicación con nuestro sitio Web.

Paso 2 : Implementando Twitter OAuth con PHP

Para esto existe una clase que hará más sencillo el proceso, descargaremos la librería aquí.

Ahora abriremos el archivo config.php y colocaremos la información correcta que la encontraremos en la aplicación creada en Twitter.

Para nuestro demo, necesitaremos estos archivos:

  • config.php : Archivos de configuración para Loguearse con Twitter.
  • OAuth.php : Clase para manejar el protocolo OAuth
  • twitteroauth.php : Clase para interactuar con Twitter y el protocolo OAuth.
  • callback.php : Proceso que redireccionara a una ruta personalizada.
  • redirect.php : Genera una url valida y redireccionara a Twitter para loguearse a nuestro WebSite.
  • logout.php : Cerrar sesión en nuestro Website ( no en Twitter.com ).

Estos archivos vienen por defecto en la librería, nuestro trabajo será generar un index que nos verifique el estado del usuario de Twitter, si esta logueado podrá imprimir sus datos, sino pintara un enlace para iniciar sesión.

< ?php
session_start();

require_once('config.php');
require_once('twitteroauth.php');

if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])){    
    header('Location: ./logout.php');exit;
}

$access_token = $_SESSION['access_token'];
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']);
$content = $connection->get('account/verify_credentials');

print_r($content);exit;
?>

De esta manera podemos loguearnos con una cuenta Twitter en nuestra Web, olvidándonos por completo de llenar registros y validarlos, Twitter hará la validación de credenciales, datos, etc.

Cuando iniciemos una nueva aplicación Web que necesite un registro podemos agregar esta funcionalidad como alternativa para aquellos que dispongan de una cuenta en esta red social.

Más info: Twitter API Wiki / OAuth FAQ

jfdghjhthit45
zp8497586rq

También te puede interesar

36 Comments

  1. Cristóbal
    mar 15, 2010 @ 19:12:06

    Interesantísimo, se agradece mucho.

  2. alex
    mar 16, 2010 @ 14:23:18

    el enlace al codigo para descarga no corresponde con las librerias, no?

  3. Utilizando Facebook Connect con PHP | Craftyman Blog
    mar 18, 2010 @ 09:42:47

    [...] nuestro anterior Post vimos como loguearnos a nuestro WebSite con Twitter y el protocolo OAuth, esta vez realizare un tutorial para hacerlo con Facebook Connect, si utilizan WordPress pueden ver [...]

  4. Pepe
    mar 26, 2010 @ 11:24:28

    ¿Donde encuentro el archivo functions.php?

    Saludos.

    • craftyman
      mar 26, 2010 @ 18:13:33

      @Pepe,
      En realidad no necesitas el archivo functions.php, en el codigo se me olvido borrarl esa linea de un demo que hice :p

      Saludos.

  5. gcarlo
    abr 06, 2010 @ 20:22:07

    Implemente la API pero no logro cerrar sesion de manera adecuada? alguna idea para cerrar la sesion ? y cerrar sesion en ambas apps (twitter y mi app)?

    Gracias y saludos

    • craftyman
      abr 08, 2010 @ 11:48:51

      @gcarlo, cerrar sesion en tu sitio Web implica liberar las variables $_SESSION (si usas PHP) y destruirlas, para cerrar sesion en Twitter.com se deberia hacer lo mismo, por ello no es posible lo que buscas, ten en cuenta que si estas cerrando sesion adecuadamente, lo que sucede es que al loguearte nuevamente tu cuenta Twitter con el sitio ya esta registrada y no te pedira aceptar la aplicacion nuevamente, a menos que entres a la pestañña connections en tu panel de twitter y elimines la aplicacion “Revoke Access”.

      Saludos.

  6. links for 2010-05-10 — Guiabreve
    may 10, 2010 @ 20:05:08

    [...] Utilizando Twitter OAuth con PHP Pequeña explicación sobre OAuth y Twitter. Incluye una clase en PHP para facilitarnos el trabajo (tags: class php oauth twitter) [...]

  7. MarcoS
    ago 12, 2010 @ 16:24:31

    Excelente, muy util justo lo que estaba necesitando, saludos.

  8. Roberto
    ago 31, 2010 @ 12:47:37

    Esto tambien funcionara si quiero usar una aplicacion, y que esa aplicacion no me mande ligas directas a twitter.com ya que en el trabajo lo tengo restringido?

    • craftyman
      sep 03, 2010 @ 18:47:28

      Roberto,
      Para hacer una autenticación con OAuth, es necesario que habra un popup y este ira a twitter para hacer la validacion, osea que si estaria habriendo un twitter.com…

  9. Mario Nava
    sep 02, 2010 @ 16:32:12

    Podrían hacer un artículo para explicar sólo como enviar un tweet desde mi website a twitter?? Muchas gracias

  10. heisler
    sep 12, 2010 @ 15:00:42

    esto es lo que recibo:
    Could not connect to Twitter. Refresh the page or try again later.

  11. javasutra
    sep 19, 2010 @ 22:32:05

    esto es lo que obtengo: Could not connect to Twitter. Refresh the page or try again later.

    • craftyman
      sep 20, 2010 @ 14:57:06

      Holas,
      Este tipo de error puede ser por una caida de servidor de Twitter, esto esta pasando algunas veces en Twitter.

      Saludos.

  12. denia99
    sep 20, 2010 @ 05:34:07

    Muy buenas, estoy desarrollando una aplicación web para twitter, y estoy leyendo que la autenticación a través de nuestra aplicación sólamente se puede hacer mediante el protocolo OAuth, bien, aquí viene mi duda, yo no estoy utilizando dicho protocolo pues elegí utilizar otra API, entonces ¿para registrar mi aplicación en Twitter tendré que utilizar obligatoriamente OAuth?

    Muchas gracias por sus aportaciones

    • craftyman
      sep 20, 2010 @ 14:55:40

      Hola Denia99,

      Si registras una aplicación en Twitter es para utilizar OAuth, si utilizas la autenticación directa con PHP no necesitas registrar ninguna aplicación porque no se necesitan las clave que te genera este, el beneficio de utilizar el OAuth es brindar seguridad a tus usuarios, al darles la información que sus datos estan pasando por Twitter.

      Saludos.

  13. denia99
    sep 21, 2010 @ 06:57:44

    Muchas gracias por la contestación César, me surge otra duda, debes de registrar la aplicación para poder hacer un número indefinido de consultas? te explico, yo estoy utilizando otra API distinta a la OAuth, y mi objetivo es hacer una serie de consultas (son muchísimas), pero cuando llega a un número, entonces la aplicación no puede continuar haciendo consultas, había pensado en que el problema está en que debes de registrar la aplicación en Twitter, muchas gracias por tu atención :)

    • craftyman
      oct 01, 2010 @ 13:42:30

      Hola denia99,
      Pues no deberías hacer muchas consultas al API de Twitter ya que si tu aplicación cuenta con muchos visitantes, estas consultas se multiplicaran si no tienen cache, y Twitter puede banear tu dominio e IP.

      Si utilizas o no el OAuh, eso no permite hacer mas ni menos consultas.

      Dime que tipo de consultas haces, tal vez exista otra solución para disminuir las peticiones.

      saludos.

  14. Denia99
    oct 04, 2010 @ 04:40:35

    Buenas Cesar, de nuevo gracias por las contestaciones, estoy haciendo una alplicacion para tratar datos de Twitter, como si dijeramos, hacer estudios estadisticos sobre datos que hay en Twitter, entonces lo que hago es traerme usuarios y Twitts a mi base de datos local, y bien, cuando llevo muchos me da una excepcion. Ahi esta el problema.

    Otra Pregunta Cesar, se puede utilizar Oauth desde un dominio local? es decir, desde localhost.

    Gracias!

  15. Pepe
    oct 13, 2010 @ 22:43:07

    Hola, ahora con el asunto del oAuth necesito mostrar los últimos tweets de mi cuenta en mi sitio. Lo estaba haciendo con la clase My_Twitter pero ya no jala con oAuth, ¿sabes cómo lograrlo con twitteroauth?

    • craftyman
      oct 16, 2010 @ 00:06:10

      Hola Pepe,

      Si lo que necesitas son tus últimos tweets puedes realizarlo sin utilizar OAuth, con una funcion sencilla.

      http://tednologia.com/buscador-twitter-con-php/

      El OAuth te lo recomiendo usar en aplicaciones donde implique logueo de usuarios, crear tweets, seguir a otros usuarios, y metodos que se usan estando logueado.

      Saludos.

  16. denia99
    oct 15, 2010 @ 05:08:32

    Buenas de nuevo Cesar,

    tengo un problemilla que no se solucionar, cuando me logueo e introduzco el usuario y contraseña de twitter, luego salta una pantalla que dice “Redirigiendo a la aplicacion”, pero sale un pantalla que dice que no se encuentra dicha pagina disponible.

    Mi pregunta es si esta redireccion es la indicamos en la web de twitter cuando registramos la aplicacion, es decir, en mi caso el callback.php,

    Entonces si es asi por que no me redirige a dicha pagina?
    Muchas gracias por todo Cesar

    • craftyman
      oct 15, 2010 @ 23:09:29

      Hola denia99,

      En teoria deberia ocurrir eso, yo tambien tube el mismo problema, no me di cuenta de la constante declara en el archivo config.php OAUTH_CALLBACK, en esa contante debe poner la url a donde quieras que redireccione twitter luego de hacer el logueo.

      define(“OAUTH_CALLBACK”, “http://link.net/callback.php”);

      Saludos.

  17. denia99
    oct 18, 2010 @ 10:09:28

    Hola Cesar, muchas gracias ante todo por las contestaciones. Te voy a preguntar otra cosilla, me gustaria sacar los twitts de un hashtag en concreto, me han sugerido que utilice el servicio twitterbackup, pero no se muy bien como funciona, existe algun metodo de las API´s de Twitter que lo hagan?

    Muchas gracias por todo

  18. Iván Valdez
    ene 02, 2011 @ 13:38:33

    Hey ¿qué tal?
    Una cuestión, quisiera crear un ‘bot’ para que este de tweets automaticos a un feed. sabes como podría lograr hacerlo con esto? gracias.

  19. AxlExt
    feb 26, 2011 @ 15:38:35

    El tutorial esta muy bueno, pero tengo una pregunta, esto que se muestra es para el caso en donde necesitamos un login. Existe una manera de vincular la cuenta de twitter, así en un posterior login no es necesario pasar por la etapa de dar permisos de acceso, y solo entrar?

  20. caberod
    abr 06, 2011 @ 06:05:04

    Hola, quería saber si alguien me puede decir si es posible sacer de la información de twitter el email del usuario al que se accede (similar a lo que se puede hacer en facebook). Muchas gracias.

  21. Victor
    abr 11, 2011 @ 18:58:07

    aja primero funciono perfecto al siguiente dia trato de acceder a la app y me pone esto “No se pudo conectar. Intentelo de nuevo más tarde” y luego asi se quedo para siempre… será que fue baneado mi ip o dominio gracias

    • craftyman
      abr 11, 2011 @ 23:58:37

      No se trata de un filtro de tu dominio o IP… es porque twitter es muy inestable en las conexiones por aplicacion ultimamente… sucede por ratos… cuando los servidores de twitter se sobrecargan.

  22. Juan
    abr 17, 2011 @ 20:56:26

    Hola! Muy bueno el tutorial, gracias por compartir! Tengo un problema. Hago todo como se indica y ni bien entra a la web aparece “Forbidden
    You don’t have permission to access / on this server.”
    y estoy poniendo los datos correctos en el archivo config.php
    Que puede ser?
    Muchas gracias

    Craftyman:
    Hola Juan, este error ocurre porq los permisos de las carpetas donde alojas los archivos no son los adecuados ….
    Si es linux debería tener 775 para que ejecute todo normalmente.
    Saludos.

  23. denia99
    may 26, 2011 @ 04:55:09

    hola César,

    Estoy interesado en hacer un script para automatizarlo con cron. El caso es que quiero hacer llamadas autenticadas a twitter para descargar datos.

    ¿Cómo puedo hacerlas sin perder el oauth_token y el oauth_token_secret?

    Gracias!

  24. Buscador Twitter con PHP
    jun 08, 2011 @ 14:39:54

    [...] te puede interesar Como loguearse con Twitter y PHP . AKPC_IDS += “1229,”; Posteado el: 16/10/2010  por: Craftyman [...]

  25. paul
    sep 19, 2011 @ 09:31:09

    Oye,y donde es para loguearse? solo me redirecciona al logout, pero no me sale nada para iniciar sesion, o donde lo pongo o que