DesarrolloLibre

Desarrollo Web, Android, juegos y mucho más

Categorias
14-04-2016

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:

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 los 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:

Estas redes sociales debería solicitarse permisos para proveer tus datos a esta aplicación y 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.


Publicidad

Give me for a beer!

Algunos recursos que te pueden interesar

jQuery sharebox, plugin para compartir contenido

jQuery sharebox, plugin para compartir contenido

API REST en CodeIgniter

API REST en CodeIgniter

InstaStream: plugin para mostrar imágenes desde Instagram

InstaStream: plugin para mostrar imágenes desde Instagram

Algunos artículos que te pueden interesar

¿Cómo crear una aplicación en la Graph API de Facebook?

¿Cómo crear una aplicación en la Graph API de Facebook?

La Graph API de FAcebook es la forma en la que se organiza esta red social Facebook y en esta entrada veremos cómo crear una aplicación en FaceBook que no es más que un grupo de configuraciones realizadas en la API.

Andrés Cruz 13-01-2016

Primeros pasos con Retrofit: consume tu API REST desde Android

Primeros pasos con Retrofit: consume tu API REST desde Android

Retrofit es un cliente REST para desarrollar aplicaciones en Android, permite agregar convertidores personalizados para mapear los datos obtenidos desde una API REST en formato XML o JSON en un objeto de una clase personalizada mediante un desearilizador.

Andrés Cruz 04-09-2017

La API de archivos en JavaScript - accediendo al contenido

La API de archivos en JavaScript - accediendo al contenido

En esta entrada presentaremos una API para la lectura de los archivos cargados mediante input type="file" u otros métodos como el Drag and Drop con JavaScript.

Andrés Cruz 09-02-2016