GOOGLE CONSOLE ------------------------------------------------------------------------------------------------ https://console.cloud.google.com/welcome/new?pli=1 main domain ei shudu khola jay Authorized JavaScript origins https://mangrovevalley.com Authorized redirect URIs https://mangrovevalley.com/auth/google/callback BreezeSocialite START HERE LARAVEL ------------------------------------------------------------------------------------------------ https://laravel.com/docs/11.x/socialite composer require laravel/socialite config / services.php 'google' => [ 'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect' => '/auth/google/callback', ], .env ------------------------------------------------------------------------------------------------ GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= CONTROLLER ------------------------------------------------------------------------------------------------ php artisan make:controller Auth/ProviderController use Laravel\Socialite\Facades\Socialite; use App\Models\User; use Auth; use Illuminate\Support\Str; public function redirect($provider){ return Socialite::driver($provider)->redirect(); } public function callback($provider){ try{ $SocialUser = Socialite::driver($provider)->user(); if(User::where('email',$SocialUser->getEmail())->exists()){ $user = User::where('email',$SocialUser->getEmail())->first(); if($user->password){ return redirect('/login')->withErrors(['email' => 'This email has uses different method to login']); }else{ Auth::login($user); return redirect('/user'); } } $user = User::where(['provider' => $provider, 'provider_id' => $SocialUser->id ])->first(); if(!$user){ $user = User::create([ 'name' => $SocialUser->getName(), 'email' => $SocialUser->getEmail(), 'username' => User::generateUserName($SocialUser->getNickname()), 'provider' => $SocialUser->token, 'provider_token' => $provider, 'provider_id' => $SocialUser->getId(), 'provider_token' => $SocialUser->token, 'email_verified_at' => now(), ]); } Auth::login($user); return redirect('/dashboard'); }catch(Exception $e){ return redirect('/login'); } $user = User::updateOrCreate([ 'provider_id' => $SocialUser->id, 'provider' => $provider ], [ 'name' => $SocialUser->name, 'username' => User::generateUserName($SocialUser->nickname), 'email' => $SocialUser->email, 'provider_token' => $SocialUser->token, ]); Auth::login($user); return redirect('/dashboard'); } ROUTE ------------------------------------------------------------------------------------------------ use App\Http\Controllers\Auth\ProviderController; use Laravel\Socialite\Facades\Socialite; Route::get('/auth/{provider}/redirect', [ProviderController::class, 'redirect']); Route::get('/auth/{provider}/callback', [ProviderController::class, 'callback']); LOGIN BLADE ------------------------------------------------------------------------------------------------
Login with Google
USER MIGRATION ------------------------------------------------------------------------------------------------ $table->string('username')->nullable(); $table->string('password')->nullable(); $table->string('provider')->nullable(); $table->string('provider_id')->nullable(); $table->string('provider_token')->nullable(); USER MODEL ------------------------------------------------------------------------------------------------ use App\Models\User; use Illuminate\Support\Str; $fillable 'username', 'provider', 'provider_id', 'provider_token', public static function generateUserName($username){ if($username === null){ $username = Str::lower(Str::random(8)); } if(User::where('username', $username)->exists()){ $newUsername = $username.Str::lower(Str::random(3)); $username = self::generateUserName($newUsername); } return $username; }