PlatesPHP: Sistema de plantillas para Codeigniter 3
PlatesPHP: Sistema de plantillas para Codeigniter 3
¡INSCRÍBETE A CUALQUIER CURSO CON UN 50% DE DESCUENTO PARA NUEVOS CLIENTES!

Vamos a ver como implementar Oauth2 con sparks y codeigniter para hacer uso en este caso de 2 apis, foursquare y google, aunque con esta biblioteca tenemos 14 disponibles para ser utilizadas de la misma forma que vamos a hacer con éstas. Veamos lo que dice la wikipedia de Oauth2.

OAuth es un protocolo abierto que permite autorización segura de un API de modo estándar y simple para aplicaciones de escritorio, móviles, y web.

Para desarrolladores de consumidores, OAuth es un método para interactuar con datos protegidos y publicarlos. Para desarrolladores de proveedores de servicio, OAuth proporciona a los usuarios un acceso a sus datos al mismo tiempo que protege las credenciales de su cuenta. En otras palabras, OAuth permite a un usuario del sitio A compartir su información en el sitio A (proveedor de servicio) con el sitio B (llamado consumidor) sin compartir toda su identidad.

Como vemos Oauth2 es una forma de interactuar de forma segura con las distintas apis.

Para poder seguir este tutorial y entenderlo es necesario saber como hacer la instalación de sparks, si tenéis dudas podéis visitar el post anterior Instalar sparks en codeigniter donde seguro que no os quedará ninguna y veréis que es muy sencillo de llevar a cabo, una vez dicho esto podemos empezar con este tutorial donde daremos por hecho que tenemos el proyecto creado y la instalación de sparks realizada.

Instalando Oauth2 con sparks

Vamos a decir que nuestro proyecto se llama oauth2_ci.
Para ir a nuestro proyecto desde la terminal con linux deberemos poner por ejemplo:

cd /var/www/oauth2_ci

Y los de windows como yo que tengan xampp con:

cd c:/xampp/htdocs/oauth2_ci

Ahora en la terminal o la consola introducimos el siguiente comando que será con el que se nos instalará la biblioteca de oauth2 de forma completa.

php tools\spark install -v0.4.0 oauth2

Esto nos habrá creado una nueva carpeta dentro de la carpeta sparks llamada oauth2 y dentro tendremos todo lo necesario para poder interactuar con los proveedores de las apis que oauth2 nos proporciona, veamos cuáles son:

  • Facebook
  • Foursquare
  • GitHub
  • Google
  • Instagram
  • Mailchimp
  • Mail.ru
  • PayPal
  • Soundcloud
  • Vkontakte
  • Windows Live
  • Yandex

Dejo los enlaces de mi web para ver como crear aplicaciones y obtener la app_id y secret para las apis de foursquare y google en este caso.

Crear una aplicación para google

Crear una aplicación para foursquare

Si todo ha ido bien y hemos obtenido las claves para nuestras aplicaciones podemos seguir con el tutorial, en el que más adelante las necesitaremos, veamos.

Ahora pasamos a crear el controlador que será el que se encargue de comunicarse con todos los archivos de la biblioteca y de esta forma crear los accesos con las distintas apis, veamos.

El controlador auth2.php

Creamos un archivo llamado auth2.php y lo guardamos en la carpeta controllers, dentro colocamos el siguiente código.

Como vemos con $this->load->spark(‘oauth2/0.40’); cargamos la biblioteca para poder utilizar sparks y oauth2, después creamos el método session($provider) donde provider es el siguiente segmento a session, por ejemplo, si queremos crear un sistema de login con foursquare deberíamos redirigir a nuestros usuarios a la siguiente url:

http://localhost/oauth2_ci/index.php/auth2/session/foursquare

Ahora ya podemos acceder por ejemplo a nuestra aplicación con foursquare y deberíamos ver una pantalla pidiendo permisos para poder acceder a nuestros datos, si confirmamos nos devolverá a nuestra página y veremos en pantalla un json con nuestros datos de foursquare, para el caso de google lo mismo, pero en vez del enlace anterior deberá ser a nuestra aplicación con google, y podremos ver lo mismo, un json con nuestros datos de la cuenta de google con la que hayamos accedido.

Y eso es todo, espero que os sea de mucha ayuda y, como podemos ver, sparks es increíblemente útil, aparte de su sencillez, un saludo y hasta la próxima.