¿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 PHPRegistra 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 FacebookNota 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.
¡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
Por favor dame una solución
http://awesomescreenshot.com/0af5iogz93
Cuando hago clic en el enlace de inicio de sesión con Facebook, aparece este error.
Básico
Parece que tu migración no tiene el campo para facebook_id.
¿Falta esto o me estoy perdiendo algo?
Sí, esto fue un error, ¡lo incluí ahora!
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?
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?
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