Laravel also provides a simple, convenient way to authenticate with OAuth providers using Laravel Socialite. Socialite currently supports authentication via Facebook, X, LinkedIn, Google, GitHub, GitLab, Bitbucket, and Slack.

1.Install Laravel Socialite

composer require laravel/socialite

Socialite is Laravel’s official OAuth authentication package.

2. Update Users Table for Social Login

Create Migration

php artisan make:migration add_social_login_fields_to_users_table

Migration Code

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
Schema::table('users', function (Blueprint $table) { 
$table->string('provider')->nullable(); // google, facebook, github  
$table->string('provider_id')->nullable(); // social user ID  
$table->string('avatar')->nullable(); // profile image (optional) 
});

Run:

php artisan migrate

3.Set Environment Variables

.env


GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
GOOGLE_REDIRECT_URI=http://localhost:8000/auth/google/callback
FACEBOOK_CLIENT_ID=your_facebook_client_id 
FACEBOOK_CLIENT_SECRET=your_facebook_client_secret 
FACEBOOK_REDIRECT_URI=http://localhost:8000/auth/facebook/callback 
GITHUB_CLIENT_ID=your_github_client_id 
GITHUB_CLIENT_SECRET=your_github_client_secret 
GITHUB_REDIRECT_URI=http://localhost:8000/auth/github/callback
 

4.Configure config/services.php

'google' => [
'client_id' => env('GOOGLE_CLIENT_ID'),
'client_secret' => env('GOOGLE_CLIENT_SECRET'),
'redirect' => env('GOOGLE_REDIRECT_URI'),
],
'facebook' => [
'client_id' => env('FACEBOOK_CLIENT_ID'),
'client_secret' => env('FACEBOOK_CLIENT_SECRET'),
'redirect' => env('FACEBOOK_REDIRECT_URI'),
],
'github' => [ 'client_id' => env('GITHUB_CLIENT_ID'), 'client_secret' => env('GITHUB_CLIENT_SECRET'), 'redirect' => env('GITHUB_REDIRECT_URI'), ] 

5.Define Routes

routes/web.php

use App\Http\Controllers\Auth\SocialAuthController;

Route::get('/auth/{provider}', [SocialAuthController::class, 'redirect']);
Route::get('/auth/{provider}/callback', [SocialAuthController::class, 'callback']);

6.Create SocialAuthController

php artisan make:controller Auth/SocialAuthController

7.SocialAuthController Code

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Str;
use Laravel\Socialite\Facades\Socialite;

class SocialAuthController extends Controller
{
protected $providers = ['google', 'facebook', 'github'];

public function redirect($provider)
{
if (!in_array($provider, $this->providers)) {
abort(404);
}

return Socialite::driver($provider)->redirect();
}

public function callback($provider)
{
if (!in_array($provider, $this->providers)) {
abort(404);
}

$socialUser = Socialite::driver($provider)->user();

// Find user by provider ID
$user = User::where('provider', $provider)
->where('provider_id', $socialUser->getId())
->first();

// If user does not exist, create new
if (!$user) {
$user = User::create([
'name' => $socialUser->getName() ?? $socialUser->getNickname() ?? 'Social User',
'email' => $socialUser->getEmail(),
'password' => bcrypt(Str::random(24)),
'provider' => $provider,
'provider_id' => $socialUser->getId(),
'avatar' => $socialUser->getAvatar(),
]);
}

Auth::login($user);

return redirect()->route('dashboard');
}
}

8.Add Social Login Buttons (Blade)

<a href="{{ url('/auth/google') }}" class="btn btn-danger">
Login with Google
</a>
<a href="{{ url('/auth/facebook') }}" class="btn btn-primary">
Login with Facebook
</a>
<a href="{{ url('/auth/github') }}" class="btn btn-dark"> Login with GitHub </a> 

9.OAuth Setup Instructions

Google

  1. Google Cloud Console
  2. Create project
  3. OAuth Consent Screen
  4. Create OAuth Client ID
  5. Redirect URI:
http://localhost:8000/auth/google/callback

 Facebook

  1. Facebook Developers
  2. Create App → Facebook Login
  3. Redirect URI:
http://localhost:8000/auth/facebook/callback

 GitHub

  1. GitHub → Settings → Developer Settings
  2. OAuth Apps → New App
  3. Authorization callback URL:
http://localhost:8000/auth/github/callback

Other Social Login Providers in Laravel

Built-in Socialite Providers

Laravel Socialite officially supports:

  • Twitter (X)
  • LinkedIn
  • Bitbucket
  • GitLab

i.Twitter (X) Login

Step 1: Twitter Developer Setup

  1. Go to Twitter Developer Portal
  2. Create App
  3. Enable OAuth 2.0
  4. Set Callback URL:
http://localhost:8000/auth/twitter/callback

Step 2: .env

TWITTER_CLIENT_ID=your_twitter_client_id
TWITTER_CLIENT_SECRET=your_twitter_client_secret
TWITTER_REDIRECT_URI=http://localhost:8000/auth/twitter/callback

Step 3: config/services.php

'twitter' => [
'client_id' => env('TWITTER_CLIENT_ID'),
'client_secret' => env('TWITTER_CLIENT_SECRET'),
'redirect' => env('TWITTER_REDIRECT_URI'),
],

Step 4: Button

<a href="{{ url('/auth/twitter') }}" class="btn btn-info">
Login with Twitter
</a>

 Twitter may not return email by default.

ii.LinkedIn Login

Step 1: LinkedIn Developer Setup

  1. Go to LinkedIn Developers
  2. Create App
  3. OAuth 2.0 → Redirect URL:
http://localhost:8000/auth/linkedin/callback

Step 2: .env

LINKEDIN_CLIENT_ID=your_linkedin_client_id
LINKEDIN_CLIENT_SECRET=your_linkedin_client_secret
LINKEDIN_REDIRECT_URI=http://localhost:8000/auth/linkedin/callback

Step 3: config/services.php

'linkedin' => [
'client_id' => env('LINKEDIN_CLIENT_ID'),
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
'redirect' => env('LINKEDIN_REDIRECT_URI'),
],

Step 4: Button

<a href="{{ url('/auth/linkedin') }}" class="btn btn-primary">
Login with LinkedIn
</a>

iii.GitLab Login

GitLab OAuth Setup

  • User Settings → Applications
  • Redirect URI:
http://localhost:8000/auth/gitlab/callback

.env

GITLAB_CLIENT_ID=your_gitlab_client_id
GITLAB_CLIENT_SECRET=your_gitlab_client_secret
GITLAB_REDIRECT_URI=http://localhost:8000/auth/gitlab/callback

config/services.php

'gitlab' => [
'client_id' => env('GITLAB_CLIENT_ID'),
'client_secret' => env('GITLAB_CLIENT_SECRET'),
'redirect' => env('GITLAB_REDIRECT_URI'),
],

iv.Bitbucket Login

.env

BITBUCKET_CLIENT_ID=your_bitbucket_client_id
BITBUCKET_CLIENT_SECRET=your_bitbucket_client_secret
BITBUCKET_REDIRECT_URI=http://localhost:8000/auth/bitbucket/callback

config/services.php

'bitbucket' => [
'client_id' => env('BITBUCKET_CLIENT_ID'),
'client_secret' => env('BITBUCKET_CLIENT_SECRET'),
'redirect' => env('BITBUCKET_REDIRECT_URI'),
],

v. Providers NOT Included by Default

(Using Socialite Providers)

Install base manager:

composer require socialiteproviders/manager

Example Providers:

  • Apple
  • Microsoft (Azure)
  • Instagram
  • Discord
  • Slack
  • Amazon
  • Yahoo
  • Twitch

vi. Example: Microsoft (Azure) Login

composer require socialiteproviders/microsoft

Event Listener

protected $listen = [
\SocialiteProviders\Manager\SocialiteWasCalled::class => [
'SocialiteProviders\\Microsoft\\MicrosoftExtendSocialite@handle',
],
];

config/services.php

'microsoft' => [
'client_id' => env('MICROSOFT_CLIENT_ID'),
'client_secret' => env('MICROSOFT_CLIENT_SECRET'),
'redirect' => env('MICROSOFT_REDIRECT_URI'),
],

vii.Controller Code (Same for ALL Providers)

Socialite::driver($provider)->user();

or for API / React:

Socialite::driver($provider)->stateless()->user();

Categorized in:

Laravel,