Ce tutoriel vous guidera tout au long du processus d'ajout de la fonctionnalité de connexion Facebook à votre application Laravel.
Laravel Socialite fournit une interface expressive et fluide pour l'authentification OAuth avec Facebook, Twitter, Google, LinkedIn, GitHub, GitLab et Bitbucket.
Installez-le via Composer :
composer require laravel/socialite
Ajoutez ce qui suit à votre fichier config/services.php :
'facebook' => [ 'client_id' => env('FACEBOOK_CLIENT_ID'), 'client_secret' => env('FACEBOOK_CLIENT_SECRET'), 'redirect' => env('FACEBOOK_REDIRECT_URI'), ],
Ensuite, ajoutez-les à votre fichier .env :
FACEBOOK_CLIENT_ID=your_facebook_app_id FACEBOOK_CLIENT_SECRET=your_facebook_app_secret FACEBOOK_REDIRECT_URI=http://localhost:8000/login/facebook/callback
Ajoutez ces itinéraires à votre routes/web.php :
use App\Http\Controllers\Auth\FacebookController; Route::get('login/facebook', [FacebookController::class, 'redirectToFacebook'])->name('login.facebook'); Route::get('login/facebook/callback', [FacebookController::class, 'handleFacebookCallback']);
Créez un nouveau contrôleur :
php artisan make:controller Auth/FacebookController
Implémenter le contrôleur :
<?php namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Models\User; use Illuminate\Support\Facades\Auth; use Laravel\Socialite\Facades\Socialite; class FacebookController extends Controller { public function redirectToFacebook() { return Socialite::driver('facebook')->redirect(); } public function handleFacebookCallback() { try { $user = Socialite::driver('facebook')->user(); $finduser = User::where('facebook_id', $user->id)->first(); if ($finduser) { Auth::login($finduser); return redirect()->intended('dashboard'); } else { $newUser = User::create([ 'name' => $user->name, 'email' => $user->email, 'facebook_id'=> $user->id, 'password' => encrypt('123456dummy') ]); Auth::login($newUser); return redirect()->intended('dashboard'); } } catch (\Exception $e) { dd($e->getMessage()); } } }
Ajoutez facebook_id au tableau à remplir dans votre modèle utilisateur :
protected $fillable = [ 'name', 'email', 'password', 'facebook_id', ];
Créer une nouvelle migration :
php artisan make:migration add_facebook_id_to_users_table
Dans le nouveau fichier de migration :
public function up() { Schema::table('users', function ($table) { $table->string('facebook_id')->nullable(); }); } public function down() { Schema::table('users', function ($table) { $table->dropColumn('facebook_id'); }); }
Exécutez la migration :
php artisan migrate
Dans votre vue de connexion, ajoutez un bouton « Connexion avec Facebook » :
<a href="{{ route('login.facebook') }}" class="btn btn-primary"> Login with Facebook </a>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!