Utilizando Twitter OAuth con PHP

36
96

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

36 COMMENTS

  1. 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

    • @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.

  2. 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?

    • 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…

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

  4. 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

    • 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.

  5. 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 🙂

    • 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.

  6. 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!

  7. 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?

  8. 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

    • 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.

  9. 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

  10. 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.

  11. 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?

  12. 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.

  13. 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

    • 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.

  14. 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.

  15. 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!

  16. 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

Comments are closed.