Laravel Socialite ist ein offizielles Paket, mit dem Sie Social Logins auf Basis von OAuth 2.0 unkompliziert implementieren können. Es unterstützt zahlreiche gängige Provider wie GitHub, Google, Facebook, X (Twitter), LinkedIn und mehr; komplexe OAuth-Abläufe lassen sich damit in wenigen Codezeilen umsetzen.Folgende Provider werden von Haus aus unterstützt:
Für die OAuth-Authentifizierung sind zwei Routen erforderlich: eine für den Redirect und eine für den Callback.
use Laravel\Socialite\Facades\Socialite;// Benutzer zu GitHub weiterleitenRoute::get('/auth/github', function () { return Socialite::driver('github')->redirect();});// Callback von GitHub verarbeitenRoute::get('/auth/github/callback', function () { $user = Socialite::driver('github')->user(); // Access Token via $user->token abrufen});
Damit updateOrCreate funktioniert, muss die Spalte github_id in der Tabelle users vorhanden sein. Sehen Sie sich das weiter unten aufgeführte Migrationsbeispiel an.
Fügen Sie der Tabelle users Spalten für den Social Login hinzu:
// database/migrations/xxxx_xx_xx_add_github_columns_to_users_table.phpreturn new class extends Migration{ public function up(): void { Schema::table('users', function (Blueprint $table) { $table->string('github_id')->nullable()->unique()->after('id'); $table->string('github_token')->nullable()->after('github_id'); $table->string('github_refresh_token')->nullable()->after('github_token'); }); } public function down(): void { Schema::table('users', function (Blueprint $table) { $table->dropColumn(['github_id', 'github_token', 'github_refresh_token']); }); }};
Wenn Sie das Konto mit einem bestehenden Benutzer verknüpfen möchten, der dieselbe E-Mail-Adresse verwendet, suchen Sie nach der E-Mail-Adresse und aktualisieren dann die Spalten.
Mit der Methode with() können Sie zusätzliche Parameter in den Redirect-Request aufnehmen:
// Bei Google eine Hosted-Domain-Beschränkung angebenreturn Socialite::driver('google') ->with(['hd' => 'example.com']) ->redirect();// Bei Google jedes Mal den Zustimmungsdialog anzeigenreturn Socialite::driver('google') ->with(['prompt' => 'consent']) ->redirect();
Übergeben Sie an with() keine reservierten Schlüssel wie state oder response_type.
use Laravel\Socialite\Facades\Socialite;test('Benutzer wird zu GitHub weitergeleitet', function () { Socialite::fake('github'); $response = $this->get('/auth/github'); $response->assertRedirect();});
Übergeben Sie der Methode fake() eine User-Instanz, um die vom Provider zurückgegebenen Benutzerinformationen zu mocken. Mit User::fake() erzeugen Sie einen Fake-User.
Falls Sie einen anderen als die eingebauten Provider verwenden möchten, ist die offizielle und empfohlene Vorgehensweise, mit Socialite::extend() einen eigenen Driver zu registrieren. Da der SocialiteManager von Illuminate\Support\Manager erbt, lässt er sich nach demselben Muster wie andere Laravel-Driver-Systeme erweitern.
Nachfolgend Socialite-Erweiterungen, die vom Betreiber dieser Website veröffentlicht wurden. Alle sind auf offizielle Weise über Socialite::extend() implementiert und können nach einem Eintrag in config/services.php direkt verwendet werden.
LINE
LINE SDK für Laravel. Neben dem OAuth-Login über Socialite ist auch die Messaging API integriert.
Bluesky
Anbindung an das AT Protocol (Bluesky). Unterstützt OAuth-Authentifizierung und das Absetzen von Posts.
Discord
OAuth2-Login mit Discord.
Threads
Anbindung an Meta Threads. Unterstützt OAuth-Authentifizierung und die Posting-API.
Amazon
OAuth-Login über Login with Amazon.
Mastodon
OAuth-Login gegen Mastodon-Instanzen.
WordPress
OAuth-Login für WordPress.com und selbst gehostete WordPress-Instanzen.