Laravel Socialite is a package that simplifies the process of OAuth authentication with various social media platforms such as Facebook, Twitter, Google, and more. Below, I'll provide you with a step-by-step guide on how to configure and use Laravel Socialite for OAuth authentication.
You can install Laravel Socialite using Composer. Open your terminal and run the following command:
composer require laravel/socialite |
Once the package is installed, you need to configure your OAuth credentials for each social platform you want to use. Add the following configuration to your config/services.php
file:
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT_URI'), ], |
Make sure to replace github
with the appropriate provider name (e.g., facebook
, twitter
, google
) and set the corresponding client_id
, client_secret
, and redirect
values. You can obtain these values by creating an application on the respective platform's developer console.
Add the OAuth credentials to your .env
file:
GITHUB_CLIENT_ID=your-github-client-id GITHUB_CLIENT_SECRET=your-github-client-secret GITHUB_REDIRECT_URI=http://your-app-url/callback |
Create routes in your routes/web.php
file to handle the OAuth authentication flow:
use App\Http\Controllers\Auth\SocialiteController; Route::get('auth/{provider}', [SocialiteController::class, 'redirectToProvider']); Route::get('auth/{provider}/callback', [SocialiteController::class, 'handleProviderCallback']); |
Now, create a controller using the Artisan command:
php artisan make:controller Auth/SocialiteController |
Update your SocialiteController.php
file to include the following methods:
namespace App\Http\Controllers\Auth; use Laravel\Socialite\Facades\Socialite; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Models\User; class SocialiteController extends Controller { public function redirectToProvider($provider) { return Socialite::driver($provider)->redirect(); } public function handleProviderCallback($provider) { $socialiteUser = Socialite::driver($provider)->user(); $user = User::firstOrCreate( ['email' => $socialiteUser->getEmail()], [ 'name' => $socialiteUser->getName(), 'password' => bcrypt(str_random(16)), ] ); auth()->login($user); return redirect('/home'); } } |
Make sure your User
model includes the Socialite
trait. Open your User.php
file and add the following:
use Laravel\Socialite\Two\User as SocialiteUser; class User extends Authenticatable { use Notifiable, Socialite; // ... } |
You can now use the /auth/{provider}
route to initiate the OAuth authentication flow. For example, to authenticate with GitHub, you would visit /auth/github
.
After the user authorizes the application, they will be redirected to the /auth/{provider}/callback
route, where their information is processed, and they are logged in.
Remember to customize the code according to your application's specific requirements and follow the documentation for each social platform for additional configuration options and features.
=== Happy Coding :)