Autenticación social o login con HybridAuth en redes sociales con PHP

14-04-2016 - Andrés Cruz

Autenticación social o login con HybridAuth en redes sociales con PHP

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos.

Existen muchas librerías para obtener datos del usuario de una red social como Twitter, Google plus, Facebook y muchas otras solicitando al usuario que permiso para acceder a sus datos y así saltarse el registro del usuario en nuestras aplicaciones, esto se conoce como autenticación social.

Muchas de estas librerías manejan un número fijo de autenticaciones sociales, otras no las actualizan desde hace meses o incluso años, otras son pagas y con esto se reduce bastante las posibilidades a emplear.

social

También existe la posibilidad de desarrollar nuestra propia integración con la(s) rede(s) "sociale(s)" anteriores aunque en general esto sería un trabajo extra que podemos conseguir gratuitamente si buscamos un poco y empleando las librerías correctas estas nos proveen de una capa (previamente configurada) para abstraernos de las diferentes conexiones a realizar a cada una de las APIs sociales y solo debemos configurar las redes sociales que deseamos emplear. Lo que es una característica muy importante y útil al momento del desarrollo de la aplicación.

HybridAuth: librería para la autenticación social para todos

hybridAuth framework PhP

HybridAuth permite realizar lo que se ha conversado hasta el momento, obtener ciertos datos de acceso de las redes sociales que tengamos configurado. Emplee esta librería para PHP y luego de trastear un rato con ella y entender su funcionamiento, documentación y configuración resulta muy fácil su uso; inclusive existen varias integraciones para distintos framework entre ellos CodeIgniter, aunque para ellos podemos descargarla del siguiente enlace ya que la desarrollada por la propia HybridAuth se encuentra bastante desactualizada.

Creando aplicaciones sociales

En general, si deseamos emplear cualquier integración con las redes sociales para lograr la autenticación debemos crear desde el portal de desarrollo de esa red social una aplicación, luego conseguir los tokens para establecerlos en HybridAuth, específicamente en el archivo:

hybridauth/config.php

El cual presenta la siguiente estructura:

return
        array(
            "base_url" => "http://login.com/hybridauth",
            "providers" => array(
                // openid providers
                "OpenID" => array(
                    "enabled" => true
                ),
                "Yahoo" => array(
                    "enabled" => true,
                    "keys" => array("key" => "", "secret" => ""),
                ),
                "AOL" => array(
                    "enabled" => true
                ),
                "Google" => array(
                    "enabled" => true,
                    "keys" =>  array("key" => "", "secret" => ""),
                ),
...

En dónde key y en secret debes colocar las keys/llaves que proveen las distintas plataformas sociales como Google, Twitter, Facebook, etc.

Como verás en la documentación oficial, existen muchas redes sociales a las cuales puede emplear en la autenticación; aquí se explicará el proceso de crear y configurar las aplicaciones en Twitter y Google.

En la base_url debes colocar la URL base de nuestro proyecto apuntando hasta la carpeta que contiene la librería de autenticación Hybridauth; para el ejemplo presentado es login.com lo cual es URL armada en un Virtual Host que tiene el siguiente formato:

<VirtualHost login.com>
    DocumentRoot /var/www/html/test/login/hybridauth
    ServerName login.com
</VirtualHost>

En donde la carpeta: hybridauth contiene a nuestra librería Hybridauth:

additional-providers (providers adicionales)
hybridauth (librería PHP para la autenticación)
index.php (archivo de prueba para la autenticación)

Aunque puedes realizar la autenticación social perfectamente sin emplear un VirtualHost.

Creamos un index.php en la raíz de nuestro proyecto; es decir en /test/login/hybridauth/ con la siguiente estructura:

<!--?php
// referencia a la librería hybridauth
$config = dirname(__FILE__) . '/hybridauth/config.php';
require_once( "hybridauth/Hybrid/Auth.php" );

try {
    // se inicializa la libreria
    $hybridauth = new Hybrid_Auth($config);
    
    // obtenemos el proveedor por parámetros (Google, Twitter, etc)
    $provider_name = $_REQUEST["provider"];

    // autenticamos a la persona
    $twitter = $hybridauth->authenticate($provider_name);

     // obtenemos la información (perfil) del usuario
    $user_profile = $twitter->getUserProfile();

   // mensaje de saludo al usuario con su informacion
   echo "Hi there! " . $user_profile->displayName . " " . $user_profile->email . " " . $user_profile->birthDay;
} catch (Exception $e) {
    echo "Ooophs, we got an error: " . $e->getMessage();
    die();
}
?-->

Creando y configurando la aplicación en Twitter

Ahora crearemos las aplicaciones sociales en la plataforma de Twitter; ya se ha trabajado anteriormente con la API de Twitter para desarrolladores:

Los pasos para crear la aplicación ya han sido tratados anteriormente y si nos sabes como es, puedes consultar los enlaces anteriores; vamos a https://apps.twitter.com/ creamos nuestra aplicación y (para nuestro ejemplo) la configuramos de la siguiente forma:

Configurar lOgin Social en twitter

Y obtenemos las llaves/keys que copiaremos en el archivo /test/login/hybridauth/index.php:

Configurar lOgin Social en twitter

Creando y configurando la aplicación en Google

Para lograr la autenticación social en Google debemos ir a https://console.developers.google.com/, luego a Crear un poryecto:

Crear proyecto google

Luego clic en Google+ API:

Google + API

Clic en credenciales y ID de cliente de oAuth::

Crear credenciales google

Llenamos el formularios y tomamos los parámetros anteriores y los establecemos en :

parámetros google

Probando el login social

Al ingresar en los siguientes enlaces:

Al momento del login o registros a alguna de estas redes sociales, se les va a solicitar permisos de accesos a su perfil para obtener parte de tus datos de esta red social a la aplicación que esté desarrollando, si el usuario acepta luego aparecer un mensaje de saludo con el nombre, lo que significa que el login fué exitoso.

Un punto importante es que las redes sociales proveen muy poca información al usuario, la cuenta (en el caso de Twitter), el correo (solo en el caso de Google+) y casi siempre el nombre y apellido; informacion como telefono, sexo, dirección generalmente no es proveída, pero todo esto depende de las políticas de privacidad que tengas las redes sociales y de igual manera si las necesitas podrás solicitarlas al usuario en otro bloque de tu app como un formulario independiente.


Andrés Cruz
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.

Conozca nuestros cursos sobre Laravel, CodeIgniter, Flutter, Electron, Django, Flask y muchos más!

Ver los cursos
¡Hazte afiliado en Gumroad!

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
!Web Alojada en Hostinger!