Zum Inhalt springen
BirdAPI powered by SKYLITE.DESIGN
Kontakt
Zurück zum Blog

Laravel Socialite Einrichten

Meist gelesen

Fortgeschritten

  • Laravel 12
  • PHP 8.4

Laravel Socialite bietet eine einfache Möglichkeit zur Authentifizierung mit Social Media Plattformen wie Facebook, Google, Twitter, und GitHub. Diese Anleitung...

PDF / Drucken
0 Bewertungen
2.023 0 Kommentare

Voraussetzungen

Eine Laravel-Installation (vorausgesetzt, du hast bereits ein Laravel-Projekt eingerichtet) Composer installiert

Schritt 1: Installation von Laravel Socialite

Zuerst musst du Laravel Socialite mithilfe von Composer in deinem Laravel-Projekt installieren:
shell
composer require laravel/socialite

Schritt 2: Konfiguration

2.1 Service Provider und Alias Falls du Laravel 5.4 oder älter verwendest, musst du den Service Provider und den Alias in der config/app.php Datei registrieren. Bei neueren Versionen von Laravel ist dies nicht mehr notwendig, da der Service Provider automatisch geladen wird.

2.2 Environment-Datei

php
'providers' => [
    // Andere Service-Provider
    Laravel\Socialite\SocialiteServiceProvider::class,
],

'aliases' => [
    // Andere Aliases
    'Socialite' => Laravel\Socialite\Facades\Socialite::class,
],
Füge deine Social Media App-Schlüssel und Geheimnisse in deine .env Datei ein. Zum Beispiel für GitHub:
php
GITHUB_CLIENT_ID=dein-github-client-id
GITHUB_CLIENT_SECRET=dein-github-client-secret
GITHUB_REDIRECT_URI=https://deine-domain.com/auth/github/callback

Schritt 3: Hinzufügen der Socialite-Anbieter-Konfigurationen

Füge die entsprechenden Anbieter-Konfigurationen zu deiner config/services.php Datei hinzu:
php
return [

    // Andere Service-Konfigurationen

    'github' => [
        'client_id' => env('GITHUB_CLIENT_ID'),
        'client_secret' => env('GITHUB_CLIENT_SECRET'),
        'redirect' => env('GITHUB_REDIRECT_URI'),
    ],

    // Weitere Anbieter wie 'facebook', 'google' etc. können hier hinzugefügt werden
];

Schritt 4: Erstellen der Auth-Routen

Füge die Routen für die Social-Login-Anbieter in deiner routes/web.php Datei hinzu:
php
use Laravel\Socialite\Facades\Socialite;
use App\Http\Controllers\Auth\SocialiteController;

Route::get('auth/github', [SocialiteController::class, 'redirectToProvider']);
Route::get('auth/github/callback', [SocialiteController::class, 'handleProviderCallback']);

Schritt 5: Erstellen des Socialite Controllers

Erstelle einen Controller für die Socialite-Authentifizierung:
shell
php artisan make:controller Auth/SocialiteController
Füge die folgenden Methoden in den erstellten Controller (app/Http/Controllers/Auth/SocialiteController.php) ein:
blade
namespace App\Http\Controllers\Auth;

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

class SocialiteController extends Controller
{
    /**
     * Redirect the user to the GitHub authentication page.
     *
     * @return \Illuminate\Http\Response
     */
    public function redirectToProvider()
    {
        return Socialite::driver('github')->redirect();
    }

    /**
     * Obtain the user information from GitHub.
     *
     * @return \Illuminate\Http\Response
     */
    public function handleProviderCallback()
    {
        $githubUser = Socialite::driver('github')->stateless()->user();

        $user = User::updateOrCreate(
            [
                'email' => $githubUser->getEmail(),
            ],
            [
                'name' => $githubUser->getName(),
                'password' => Hash::make(str_random(24)), // Sicherstellen, dass ein Passwort gesetzt wird
                'github_id' => $githubUser->getId(), // Hinzufügen falls du github_id Spalte in der Datenbank hast
            ]
        );

        Auth::login($user, true);

        return redirect('/home');
    }
}

Schritt 6: Migration anpassen

Falls notwendig, füge eine Spalte für die Anbieter-ID zu deiner users Tabelle hinzu. Du kannst dies durch das Erstellen einer neuen Migration tun:

Bearbeite die Migration -

shell
php artisan make:migration add_github_id_to_users_table --table=users

um die neue Spalte hinzuzufügen:

php
database/migrations/xxxx_xx_xx_xxxxxx_add_github_id_to_users_table.php
php
public function up()
{
    Schema::table('users', function (Blueprint $table) {
        $table->string('github_id')->nullable()->unique();
    });
}

public function down()
{
    Schema::table('users', function (Blueprint $table) {
        $table->dropColumn('github_id');
    });
}
Führe die Migration aus:
shell
php artisan migrate

Schritt 7: Frontend-Anpassungen

Füge einen Link oder Button in deinem Frontend hinzu, um die Social-Login-Funktionalität zu nutzen. Zum Beispiel in einer Blade-Template-Datei (resources/views/auth/login.blade.php):
php
<a href="{{ url('auth/github') }}" class="btn btn-primary">Login with GitHub</a>
Du solltest nun in der Lage sein, dich über GitHub in deiner Laravel-Anwendung zu authentifizieren. Wiederhole diese Schritte für andere Social-Login-Anbieter, indem du die entsprechenden Einstellungen und Routen anpasst.

Kommentare 0

Noch keine Kommentare. Seien Sie der Erste!

Kommentar schreiben

Ihre Meinung ist willkommen — Kommentare erscheinen nach kurzer Prüfung.

Kommentare werden vor Veröffentlichung moderiert.