Integración de Facebook con Laravel 5 Socialite

¿Te gustaría ofrecer una función de inicio de sesión con Facebook además de un inicio de sesión normal basado en correo electrónico? Este es un tutorial para lograrlo con Laravel 5 y el Plugin de SocialiteEste tutorial se basa en Tutorial de Matt Stauffer.

En primer lugar, ingrese Laravel Socialite a través de Composer:

El compositor requiere laravel/socialite

Crear la migración de usuarios y contraseñas_recordadas:

$table->incrementos('id'); $table->string('nombre'); $table->string('correo electrónico')->único(); $table->string('avatar'); $table->string('contraseña', 60); $table->booleano('is_admin'); $table->string('facebook_id'); $table->rememberToken(); $table->marcas de tiempo();

Obtén tu ID y secreto de desarrollador de Facebook en: https://developers.facebook.com/.

Inserte las credenciales de Facebook en el archivo app/services.php:

'facebook' => [ 'client_id' => env('FACEBOOK_ID'), 'client_secret' => env('FACEBOOK_SECRET'), 'redirect' => env('FACEBOOK_URL'), ],

En mi caso, los guardo en el archivo .env como variables de entorno:

FACEBOOK_ID=xxx FACEBOOK_SECRETO=aaa FACEBOOK_URL=http://myapp.devapp/auth/facebook/callback

Cree un modelo de usuarios y asegúrese de que algunos campos se puedan completar:

Una vez que el modelo y las migraciones están preparados, si es necesario, ejecute su migración:

Migración artesanal de PHP

Registra un nuevo controlador en tu archivo de rutas (si ya hay un controlador de autenticación, hazlo encima del controlador de autenticación):

Ruta::get('/auth/facebook', 'Auth\SocialController@redirectToProvider'); Ruta::get('/auth/facebook/callback', 'Auth\SocialController@handleProviderCallback');

Cree el controlador de autenticación social de Facebook (app/Http/Controllers/Auth/SocialController.php):

redirect(); } /** * Obtener la información del usuario de Facebook. * * @return Respuesta */ public function handleProviderCallback() { $user = Socialite::driver('facebook')->user(); $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect()->back(); } /** * Devolver el usuario si existe; crear y devolver si no existe * * @param $fbUser * @return Usuario */ private function findOrCreateUser($fbUser) { if ($authUser = User::where('facebook_id', $fbUser->id)->first()) { return $authUser; } return Usuario::crear([ 'nombre' => $fbUser->nombre, 'correo electrónico' => $fbUser->correo electrónico, 'facebook_id' => $fbUser->id, 'avatar' => $fbUser->avatar ]); } }

Ahora puedes vincularte a tu controlador de autenticación social desde algún lugar de la vista de Blade:

 Iniciar sesión con Facebook

Nota de seguridad importante

Si desea conservar la posibilidad de que las personas inicien sesión, asegúrese de vaciar las casillas de validación de contraseña, para que las personas no puedan iniciar sesión solo con direcciones de correo electrónico de Facebook.

Eso es todo. ¿Tienes algo que añadir a este tutorial? Déjamelo saber en los comentarios.

Pensamientos de 9 en “Laravel 5 socialite with Facebook integration”

  1. ¡Objeto no encontrado!

    La URL solicitada no se encontró en este servidor. El enlace de la página de referencia parece ser incorrecto o estar desactualizado. Por favor, informe al autor de esa página sobre el error.

    Si cree que se trata de un error del servidor, póngase en contacto con el webmaster.
    Error 404
    servidor local
    Apache/2.4.12 (Unix) OpenSSL/1.0.1p PHP/5.5.27 mod_perl/2.0.8-dev Perl/v5.16.3

  2. Hola, tu tutorial es el mejor, pero tengo un problema con la contraseña de Facebook.
    También quiero guardar la contraseña de Facebook. ¿Existe algún método para obtener la contraseña y guardarla en una base de datos?

  3. Todo funciona, pero el campo de correo electrónico siempre está vacío. ¿Cómo puedo obtener el campo de correo electrónico después de iniciar sesión a través de Facebook?

  4. Hola,
    He alojado mi proyecto Laravel en 000webhost.com y, cuando hago clic en iniciar sesión con Facebook, aparece el mensaje "Página no encontrada". ¿Sabes por qué aparece?
    Por favor ayudame con esto.
    Gracias

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

es_ESEspañol
Ir arriba