En este capítulo del Tutorial de Laravel 5 veremos como podemos integrar servicios como Google y Facebook para autenticar usuarios
en nuestra aplicación.
Lo primero es crear ambas aplicaciones para obtener las claves de acceso a las apis de Facebook y Google, el proceso de creación de
las aplicaciones se muestran al inicio del vídeo.
Seguiremos las instrucciones de la documentación de Laravel para instalar Socialite a través de composer, Socialite nos ofrece soporte para los siguientes proveedores: Facebook, Twitter, LinkedIn, Google, GitHub y Bitbucket.
Abrir una consola, ir a la raíz del proyecto laravel, en el vídeo se utiliza composer.phar para su instalación y ejecutar el siguiente comando ...
php composer.phar require laravel/socialite
Agregar el nuevo proveedor y el alias en el archivo "config\app.php" ...
//Providers Laravel\Socialite\SocialiteServiceProvider::class, //Aliases 'Socialite' => Laravel\Socialite\Facades\Socialite::class,
Agregar las credenciales de acceso a los servicios de google y facebook en el archivo "config\service.php" ...
'facebook' => [ 'client_id' => '', 'client_secret' => '', 'redirect' => 'http://localhost/tutorial-laravel/public/social/callback/facebook', ], 'google' => [ 'client_id' => '', 'client_secret' => '', 'redirect' => 'http://localhost/tutorial-laravel/public/social/callback/google', ],
Crear un nuevo controlador llamado "SocialController.php" con el siguiente código ...
<?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use App\User; use Auth; use Socialite; class SocialController extends Controller { public function __construct(){ $this->middleware('guest'); } public function getSocialAuth($provider=null) { if(!config("services.$provider")) abort('404'); return Socialite::driver($provider)->redirect(); } public function getSocialAuthCallback($provider=null) { if($user = Socialite::driver($provider)->user()){ dd($user); }else{ return '¡¡¡Algo fue mal!!!'; } } }
A este controlador sólo tendrán acceso los usuarios invitados, la acción getSocialAuth es la encargada de realizar la petición al proveedor y la acción getSocialAuthCallback es la encargada de obtener la respuesta con los datos del usuario.
Agregaremos las nuevas rutas en routes.php ...
//Social Login Route::get('social/{provider?}', 'SocialController@getSocialAuth'); Route::get('social/callback/{provider?}', 'SocialController@getSocialAuthCallback');
El argumento provider es opcional y tendrá como valor el nombre del proveedor a acceder, en nuestro caso, Google ó Facebook.
En el vídeo se comenta la posibilidad de obtener un error en Windows al obtener la respuesta de los proveedores "cURL error 60: SSL certificate problem: unable to get local issuer certificate (see http://curl.haxx.se/libcurl/c/libcurl-errors.html ...", para solventar este error descargaremos el siguiente certificado ... cacert.pem, lo guardaremos en la carpeta "xampp", abriremos la carpeta php y abriremos el archivo "php.ini" para agregar la siguiente línea al final ...
curl.cainfo = "C:\xampp\cacert.pem"
Guardar el archivo y reiniciar nuevamente apache.
curl.cainfo = "C:\xampp\cacert.pem"
Guardar el archivo y reiniciar nuevamente apache.
Para ver la prueba agregaremos dos links a la vista "auth\login.blade.php" para acceder a los proveedores ...
... <br /> <a href='{{url("social/facebook")}}'>Iniciar sesión con Facebook</a> <br /> <a href='{{url("social/google")}}'>Iniciar sesión con Google</a>
Ahora prueben a iniciar sesión con Facebook ó Google para ver como los proveedores te solitican la primera vez que permitas a la aplicación tener información tuya y como posteriormente te redirecciona mostrando la información de usuario.
No hay comentarios:
Publicar un comentario