Table of Contents
1. Install Laravel Socialite
2. Configure Google OAuth Credentials
3. Add Google Credentials to .env
4. Set Up Routes
5. Create the Controller
6. Update Your User Model and Migration
7. Add Google Login Button in Your View
Optional: Scopes and Additional Data
Home PHP Framework Laravel How to use Laravel Socialite for Google login?

How to use Laravel Socialite for Google login?

Jul 31, 2025 am 04:33 AM

Install Laravel Socialite via Composer. 2. Create OAuth credentials in Google Cloud Console and set redirect URI. 3. Add GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REDIRECT_URI to .env and configure in config/services.php. 4. Define routes for Google login and callback. 5. Create GoogleAuthController with redirectToGoogle and handleGoogleCallback methods to authenticate and log in user. 6. Add google_id, google_token, and google_refresh_token fields to users table via migration and include in User model's $fillable array. 7. Add a login button in Blade template linking to the Google login route, and optionally specify scopes for additional data access, ensuring email validation for security, completing the full Google login integration in Laravel using Socialite.

How to use Laravel Socialite for Google login?

Using Laravel Socialite to implement Google login is straightforward. Here's a step-by-step guide to help you set it up properly in your Laravel application.

How to use Laravel Socialite for Google login?

1. Install Laravel Socialite

First, install Laravel Socialite via Composer:

composer require laravel/socialite

Note: Laravel Socialite is a first-party package, so it’s well-maintained and integrates smoothly.

How to use Laravel Socialite for Google login?

2. Configure Google OAuth Credentials

Go to the Google Cloud Console:

  1. Create a new project or select an existing one.
  2. Navigate to APIs & Services > Credentials.
  3. Click Create Credentials > OAuth client ID.
  4. Choose Web application.
  5. Add authorized redirect URIs. For local development, use:
    http://your-app.test/login/google/callback

    or if using Laravel Sail or Valet:

    How to use Laravel Socialite for Google login?
    http://localhost:8000/login/google/callback
  6. Save and copy the Client ID and Client Secret.

3. Add Google Credentials to .env

In your .env file, add the following:

GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_REDIRECT_URI=http://localhost:8000/login/google/callback

Then, register these in config/services.php:

// config/services.php
'google' => [
    'client_id'     => env('GOOGLE_CLIENT_ID'),
    'client_secret' => env('GOOGLE_CLIENT_SECRET'),
    'redirect'      => env('GOOGLE_REDIRECT_URI'),
],

4. Set Up Routes

Add routes for redirecting to Google and handling the callback:

// routes/web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Auth\GoogleAuthController;

Route::get('/login/google', [GoogleAuthController::class, 'redirectToGoogle'])
    ->name('login.google');

Route::get('/login/google/callback', [GoogleAuthController::class, 'handleGoogleCallback']);

5. Create the Controller

Generate the controller:

php artisan make:controller Auth/GoogleAuthController

Implement the methods:

// App/Http/Controllers/Auth/GoogleAuthController.php
<?php

namespace App\Http\Controllers\Auth;

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

class GoogleAuthController extends Controller
{
    public function redirectToGoogle()
    {
        return Socialite::driver('google')->redirect();
    }

    public function handleGoogleCallback()
    {
        try {
            $googleUser = Socialite::driver('google')->user();
        } catch (\Exception $e) {
            return redirect('/login')->withErrors('Google login failed.');
        }

        // Find or create user
        $user = User::updateOrCreate([
            'google_id' => $googleUser->id,
        ], [
            'name' => $googleUser->name,
            'email' => $googleUser->email,
            'google_token' => $googleUser->token,
            'google_refresh_token' => $googleUser->refreshToken,
        ]);

        Auth::login($user);

        return redirect('/dashboard');
    }
}

? Tip: Store google_id in your users table to uniquely identify Google users. You may also want to add google_token if you plan to use Google APIs later.


6. Update Your User Model and Migration

Make sure your users table has the necessary fields:

php artisan make:migration add_google_fields_to_users_table --table=users
// migration file
public function up()
{
    Schema::table('users', function ($table) {
        $table->string('google_id')->nullable()->unique();
        $table->string('google_token')->nullable();
        $table->string('google_refresh_token')->nullable();
    });
}

Run the migration:

php artisan migrate

Also, add the fields to your User model's $fillable array:

// app/Models/User.php
protected $fillable = [
    'name',
    'email',
    'google_id',
    'google_token',
    'google_refresh_token',
];

7. Add Google Login Button in Your View

Example in a Blade file:

<!-- resources/views/auth/login.blade.php -->
<a href="{{ route('login.google') }}" class="btn btn-danger">
    Login with Google
</a>

Optional: Scopes and Additional Data

If you need more permissions (e.g., user's profile, email), you can add scopes:

return Socialite::driver('google')
    ->scopes(['openid', 'profile', 'email'])
    ->redirect();

By default, Socialite requests basic profile and email, so this is often not needed.


That’s it! You now have Google login working in your Laravel app using Socialite.

⚠️ Security Note: Always validate the email and consider email verification if you're allowing account creation based on Google login.

Basically just follow the flow: redirect → callback → get user → log in or register → redirect to dashboard.

The above is the detailed content of How to use Laravel Socialite for Google login?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use subqueries in Eloquent in Laravel? How to use subqueries in Eloquent in Laravel? Aug 05, 2025 am 07:53 AM

LaravelEloquentsupportssubqueriesinSELECT,FROM,WHERE,andORDERBYclauses,enablingflexibledataretrievalwithoutrawSQL;1.UseselectSub()toaddcomputedcolumnslikepostcountperuser;2.UsefromSub()orclosureinfrom()totreatsubqueryasderivedtableforgroupeddata;3.Us

How to handle recurring payments with Laravel Cashier? How to handle recurring payments with Laravel Cashier? Aug 06, 2025 pm 01:38 PM

InstallLaravelCashierviaComposerandconfiguremigrationandBillabletrait.2.CreatesubscriptionplansinStripeDashboardandnoteplanIDs.3.CollectpaymentmethodusingStripeCheckoutandstoreitviasetupintent.4.SubscribeusertoaplanusingnewSubscription()anddefaultpay

How to use sub-domain routing in Laravel? How to use sub-domain routing in Laravel? Aug 08, 2025 pm 05:07 PM

SetupdomainorlocalenvironmentforsubdomainsupportusingLaravelValet,Homestead,orhostsfileentrieslike127.0.0.1admin.yourapp.test;2.Definewildcardsubdomainroutesinroutes/web.phpusingRoute::domain('{account}.yourapp.com')tocapturesubdomainparameters;3.Cre

How to schedule Artisan commands in Laravel How to schedule Artisan commands in Laravel Aug 14, 2025 pm 12:00 PM

Define the schedule: Use Schedule object to configure Artisan command scheduling in the schedule method of the App\Console\Kernel class; 2. Set the frequency: Set the execution frequency through chain methods such as everyMinute, daily, hourly or cron syntax; 3. Pass parameters: Use arrays or strings to pass parameters to the command; 4. Scheduling the shell command: Use exec method to run system commands; 5. Add conditions: Use when, weekdays and other methods to control the execution timing; 6. Output processing: Use sendOutputTo, appendOutputTo or emailOutputTo to record or

How to use fluent string operations in Laravel? How to use fluent string operations in Laravel? Aug 14, 2025 pm 04:20 PM

Laravel has introduced smooth string operations based on Illuminate\Support\Stringable since version 7. The answer is to use Str::of() to start chain calls. 1. Create a Stringable instance through Str::of('string') and call the method chained. 2. Common methods include trim, replace, append, slug, upper, etc. for formatting. 3. Use when($condition, $callback) to implement conditional conversion. 4. Use after, before, substr and other methods to extract string fragments. 5. It can be used to clear the actual application.

How to create a real-time chat application with Laravel and WebSockets? How to create a real-time chat application with Laravel and WebSockets? Aug 16, 2025 am 04:23 AM

Create a Laravel project and install Sanctum and Pusher packages; 2. Configure Pusher credentials and set up broadcast drivers; 3. Create a message model and migration; 4. Create a MessageSent event that implements ShouldBroadcast; 5. Set up Sanctum authentication and API routing and implement a message controller; 6. Install and configure LaravelEcho and PusherJS in the front-end; 7. Use Echo to join the chat channel and listen to messages; 8. Define broadcast authorization logic in channels.php; 9. Start the service and test real-time message delivery. You can choose to build a LaravelWebSockets service, and the entire process is through Lar

How to build a real-time chat application with Laravel? How to build a real-time chat application with Laravel? Aug 04, 2025 pm 01:03 PM

SetupLaravelandinstalldependenciesincludingLaravelSanctumandLaravelEcho.2.ConfigurePusherasthebroadcastdriverin.envandenabletheBroadcastServiceProvider.3.CreateaMessagemodelwithamigrationthatincludesuser_idandmessagefields.4.Implementauthenticationus

What is the Laravel application request lifecycle? What is the Laravel application request lifecycle? Aug 05, 2025 pm 05:48 PM

Laravel's request life cycle goes through 7 stages from user-initiating a request to response return: 1. The request starts with public/index.php, loads the automatic loader and creates an application instance; 2. The HTTP kernel loads configuration, environment and service providers through boot classes; 3. The request handles security, session and other tasks through global middleware; 4. The router matches the request URI and method, executes the corresponding closure or controller, and applies routing middleware; 5. The controller instantiates through dependency injection, executes logic and returns views, JSON, redirects and other responses; 6. The response is encapsulated as a SymfonyResponse object and outputs through $response->send(); 7. Response sends

See all articles