Google-Login in Laravel mit Socialite implementieren


Dieses Projekt kann als Vorlage für die Implementierung von Google-Authentifizierung in Laravel verwendet werden. Es beinhaltet Docker-Umgebungen mit Apache als Webserver, PostgreSQL als Datenbank und Adminer für die Verwaltung.

Laravel: Authentifizierung mit Google
GitHub Repository

Schritte zur Implementierung der Google-Authentifizierung mit Laravel Socialite


  1. 1. Installiere Socialite:

    Führe den folgenden Composer-Befehl aus, um Socialite in deinem Laravel-Projekt zu installieren:

    composer require laravel/socialite
  2. 2. Konfiguriere die Google API:

    Gehe zu Google Developer Console, erstelle ein neues Projekt und aktiviere die "Google+ API" und die "Google Identity Platform".

    Erstelle dann ein OAuth 2.0 Client ID und speichere die Client-ID und den Client-Secret, die du für die Konfiguration benötigst.

  3. 3. Konfiguriere .env:

    Füge die folgenden Variablen in deine `.env`-Datei ein:

    
    GOOGLE_CLIENT_ID=deine-client-id
    GOOGLE_CLIENT_SECRET=dein-client-secret
    GOOGLE_REDIRECT_URI=http://deine-domain/login/google/callback
                    
  4. 4. Dienste konfigurieren:

    Füge die Google-Konfiguration in der `config/services.php` hinzu:

    
    'google' => [
        'client_id' => env('GOOGLE_CLIENT_ID'),
        'client_secret' => env('GOOGLE_CLIENT_SECRET'),
        'redirect' => env('GOOGLE_REDIRECT_URI'),
    ],
                    
  5. 5. Route und Controller einrichten:

    Erstelle eine Route für den Google-Login und den Callback:

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

    Im **GoogleAuthController** implementiere die Logik:

    
    
    class GoogleAuthController extends Controller
    {
        /**
         * Redirect the user to Google’s OAuth page.
         */
        public function redirect()
        {
            return Socialite::driver('google')->redirect();
        }
    
        /**
         * Handle the callback from Google.
         */
        public function callback()
        {
            try {
                // Get the user information from Google
                $user = Socialite::driver('google')->user();
            } catch (Throwable $e) {
                return redirect('/')->with('error', 'Google authentication failed.');
            }
    
            $existingUser = User::where('email', $user->email)->first();
    
            if ($existingUser) {
                Auth::login($existingUser);
            } else {
                $newUser = User::updateOrCreate([
                    'email' => $user->email
                ], [
                    'name' => $user->name,
                    'password' => bcrypt(Str::random(16)), 
                    'email_verified_at' => now()
                ]);
                Auth::login($newUser);
            }
    
            return redirect('/dashboard');
        }
    
    }
                    
GitHub Repository

Kontakt


Ein Name wird benötigt.
Eine E-Mail wird benötigt.
E-Mail ist nicht gültig.
Eine Telefonnummer wird benötigt.
Eine Nachricht wird benötigt.
Danke für Ihre Nachricht
Ich melde mich so schnell wie möglich bei Ihnen zurück.
Fehler beim Senden der Nachricht!
017647090029