Heim PHP-Framework Laravel Laravel-Entwicklung: Wie kann man mit Laravel Socialite schnell die Anmeldung von Drittanbietern integrieren?

Laravel-Entwicklung: Wie kann man mit Laravel Socialite schnell die Anmeldung von Drittanbietern integrieren?

Jun 13, 2023 pm 10:09 PM
laravel 第三方登录 socialite

Laravel ist ein beliebtes PHP-Framework für die Entwicklung von Webanwendungen. Eines der häufigsten Features ist die Integration von Drittanbieter-Logins in die Anwendung. Dies kann den Benutzern ein besseres Benutzererlebnis bieten und sich wiederholende Registrierungsprozesse reduzieren.

In diesem Artikel besprechen wir, wie man die Anmeldung von Drittanbietern mithilfe der Laravel Socialite-Bibliothek integriert.

Was ist Laravel Socialite?

Laravel Socialite ist ein Erweiterungspaket für das Laravel-Framework, mit dem Entwickler problemlos die Anmeldung Dritter in ihren Anwendungen implementieren können. Es unterstützt verschiedene soziale Plattformen wie Facebook, Twitter, LinkedIn usw.

Wie funktioniert Socialite?

Socialite folgt dem OAuth-Protokoll. OAuth ist ein Autorisierungsframework, das es Benutzern ermöglicht, ihre Kontoinformationen von einer Site an eine andere weiterzugeben, ohne ihre Anmeldeinformationen weiterzugeben. OAuth erfordert eine Benutzerautorisierung. In diesem Fall autorisiert der Benutzer die Anwendung, auf seine Social-Media-Konten zuzugreifen.

Socialite-Autorisierung funktioniert so:

  1. Der Benutzer klickt auf die Schaltfläche „Anmelden“, wodurch er zur Socialite-Autorisierung weitergeleitet wird:

    Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');
    Nach dem Login kopieren
  2. Socialite fordert den Benutzer auf, den Zugriff auf sein Social-Media-Konto zu autorisieren zur Social-Media-Site;

    Route::get('auth/{provider}/callback', 'AuthSocialController@handleProviderCallback');
    Nach dem Login kopieren

3. Der Benutzer autorisiert sein Konto und die Social-Media-Site leitet die Rückruf-URL mit dem Autorisierungscode an die Anwendung zurück Fordern Sie OAuth mit dem Autorisierungscode Access Token an.

public function redirectToProvider($provider)
{
  return Socialite::driver($provider)->redirect();
}
Nach dem Login kopieren
  1. Nach Abschluss der Authentifizierung gibt Socialite das autorisierte Token des Benutzers zurück und übergibt es an die Anwendung.

  2. Wie verwende ich Socialite in Laravel?
  3. Wenn Sie eine von Socialite unterstützte Social-Media-Plattform verwenden, müssen Sie Anwendungsanmeldeinformationen oder -schlüssel an zwei Stellen einrichten:
public function handleProviderCallback($provider)
{
$socialUser = Socialite::driver($provider)->user();
}
Nach dem Login kopieren

Anwendungsanmeldeinformationen oder -schlüssel dienen dazu, die Identität der Anwendung zu überprüfen.

Wir werden dies in der Datei config/services.php einrichten.

Schritt 1: Autorisierungsrouten erstellen

Erstellen Sie die Routen, die die Socialite-Autorisierung auslösen:

    'facebook' => [
        'client_id' => env('FB_CLIENT_ID'),
        'client_secret' => env('FB_CLIENT_SECRET'),
        'redirect' => env('FB_CALLBACK_URL'),
    ]

    'twitter' => [
        'client_id' => env('TW_CLIENT_ID'),
        'client_secret' => env('TW_CLIENT_SECRET'),
        'redirect' => env('TW_CALLBACK_URL'),
    ],

    'google' => [
         'client_id' => env('GOOGLE_CLIENT_ID'),
         'client_secret' => env('GOOGLE_CLIENT_SECRET'),
         'redirect' => env('GOOGLE_CALLBACK_URL')
    ]
Nach dem Login kopieren

Normalerweise werden diese Routen in einem Controller namens SocialController platziert, der die Socialite-Autorisierung und Rückrufe verarbeitet.

Schritt 2: Erstellen Sie einen SocialController

Wie alle Controller müssen wir einen SocialController mithilfe guter Codierungspraktiken erstellen.

Verwenden Sie den folgenden Befehl, um den Controller zu erstellen:

Route::get('auth/{provider}', 'AuthSocialController@redirectToProvider');
Route::get('auth/{provider}/callback', 'AuthSocialController@handleProviderCallback');
Nach dem Login kopieren

Letztendlich können wir dadurch den Autorisierungsanbieter für Autorisierung und Rückrufe zu unseren Routen verwenden.

In SocialController definieren wir zwei Methoden: „redirectToProvider“ und „handleProviderCallback“. Die erste ist eine Weiterleitung zum Autorisierungsanbieter. Die anschließende Rückruffunktion stellt dann die Rückruf-URL für den Client mit dem Autorisierungscode bereit, um die Informationen abzurufen und die Authentifizierung abzuschließen.

Hier ist der Beispielcode für SocialController:

php artisan make:controller AuthSocialController
Nach dem Login kopieren

Schritt 3: Verwenden eines Ansichtscontrollers

Normalerweise würden wir einen Ansichtscontroller verwenden, um das Rendern aller unserer Ansichten zu verwalten. Dadurch ist unser Code einfacher zu lesen und zu verwalten. Lassen Sie uns mit dem View Controller von Laravel eine einfache Ansicht für unsere Anwendung erstellen.

Verwenden Sie den folgenden Befehl, um den View-Controller zu erstellen:

namespace AppHttpControllersAuth;
use AppHttpControllersController;
use IlluminateSupportFacadesAuth;
use IlluminateHttpRequest;
use LaravelSocialiteFacadesSocialite;

class SocialController extends Controller
{
    /**
     * Redirect the user to the OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }
    /**
     * Obtain the user information from OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();

        // Do something with user data, for example:
        // $user->token;
        // $user->getId();
        // $user->getEmail();
    }
}
Nach dem Login kopieren

Hier sind die im Controller vorgenommenen Änderungen.

php artisan make:controller SocialAuthController
Nach dem Login kopieren

Schritt 4: Login-Ansicht erstellen

Jetzt sind unsere Controller und Routen fertig. Jetzt müssen wir die Ansicht für die Anmeldung erstellen.

Erstellen Sie eine Ansichtsdatei und nennen Sie sie social_login.blade.php. Wir müssen Schaltflächen anzeigen, die Anmeldungen Dritter auslösen können. In diesem Fall zeigen wir 3 Schaltflächen zur Unterstützung der Anmeldung bei Google, Facebook und Twitter.

Hier ist der Beispielcode für die Ansichtsdatei:

namespace AppHttpControllers;

use IlluminateHttpRequest;

class SocialAuthController extends Controller
{
    /**
     * Redirect the user to the OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function redirectToProvider($provider)
    {
        return Socialite::driver($provider)->redirect();
    }

    /**
     * Obtain the user information from OAuth Provider.
     *
     * @return IlluminateHttpResponse
     */
    public function handleProviderCallback($provider)
    {
        $user = Socialite::driver($provider)->user();
        $existingUser = User::where('email', $user->getEmail())->first();
        if ($existingUser) { // If user already exists, login the user                
            auth()->login($existingUser, true);
        } else { // Register new user                    
            $newUser = new User();
            $newUser->name = $user->getName();
            $newUser->email = $user->getEmail();
            $newUser->google_id = $user->getId();
            $newUser->password = encrypt('amitthakur');
            $newUser->save();
            auth()->login($newUser, true);
        }
        return redirect()->to('/home');
    }
}
Nach dem Login kopieren

Verwenden Sie die Layoutdatei oben. Wenn der Benutzer auf eine beliebige Schaltfläche klickt, leiten wir ihn an den Autorisierungsanbieter weiter. In der Antwort von SocialController erhalten wir Benutzerdaten und eine vollständige Authentifizierung.

Schritt 5: Neue Route erstellen

Jetzt müssen wir eine neue Route erstellen, um die obige Ansichtsdatei zu verarbeiten.

Ändern Sie die web.php-Datei wie folgt:

@extends('layouts.app')
@section('content')
<main class="py-4">
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">{{ __('Login') }}</div>
                    <div class="card-body">
                        <a href="{{ route('social.oauth', ['provider' => 'google']) }}" class="btn btn-google">Sign in with google</a>
                        <a href="{{ route('social.oauth', ['provider' => 'facebook']) }}" class="btn btn-facebook">Sign in with Facebook</a>
                        <a href="{{ route('social.oauth', ['provider' => 'twitter']) }}" class="btn btn-twitter">Sign in with twitter</a>
                    </div>
                </div>
            </div>
        </div>
    </div>
</main>
@endsection
Nach dem Login kopieren

Wir sollten beachten, dass die oben genannten Routen namentlich identifiziert werden, damit sie im Controller-Code referenziert werden können.

Schritt 6: Testen

Da wir nun unsere Social-Media-Identitäten eingerichtet haben, müssen wir vor dem Testen der Anwendung unsere Anwendung über die .env-Datei konfigurieren.

Um die .env-Datei zu konfigurieren, fügen Sie den folgenden Code hinzu:

Route::get('social', 'SocialAuthController@index')->name('social.login');
Route::get('social/{provider}', 'SocialAuthController@redirectToProvider')->name('social.oauth');
Route::get('social/{provider}/callback', 'SocialAuthController@handleProviderCallback');
Nach dem Login kopieren

Ersetzen Sie die tatsächliche Anwendungs-ID durch „xxxxxxxxxxxxxxxxx“ in dieser Zeile. Anschließend können wir unsere Anwendung über die Befehlszeile starten und auf die obige Ansichtsdatei zugreifen. Sobald wir auf eine beliebige Schaltfläche klicken und unser Konto über OAuth autorisieren, werden wir bei jedem bekannten Benutzer authentifiziert.

Fazit

In diesem Artikel haben wir gelernt, wie man die Anmeldung von Drittanbietern mithilfe der Laravel Socialite-Bibliothek integriert. Der Hauptzweck von Socialite besteht darin, den Anmeldevorgang für soziale Medien zu vereinfachen, um die Benutzererfahrung zu verbessern. Wir haben gelernt, wie man Socialite so einrichtet, dass es Google, Facebook und Twitter unterstützt. Außerdem rufen wir den Autorisierungscode im Controller ab und führen die OAuth-Authentifizierung mit den angeforderten Daten durch. Der Vorgang erstellt tatsächlich ein neues Konto oder aktualisiert ein bestehendes Konto.

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie kann man mit Laravel Socialite schnell die Anmeldung von Drittanbietern integrieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung PHP vs. Flutter: Die beste Wahl für die mobile Entwicklung May 06, 2024 pm 10:45 PM

PHP und Flutter sind beliebte Technologien für die mobile Entwicklung. Flutter zeichnet sich durch plattformübergreifende Funktionen, Leistung und Benutzeroberfläche aus und eignet sich für Anwendungen, die eine hohe Leistung, plattformübergreifende und benutzerdefinierte Benutzeroberfläche erfordern. PHP eignet sich für serverseitige Anwendungen mit geringerer Leistung und nicht plattformübergreifend.

Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? Wie verwende ich objektrelationales Mapping (ORM) in PHP, um Datenbankoperationen zu vereinfachen? May 07, 2024 am 08:39 AM

Datenbankoperationen in PHP werden durch ORM vereinfacht, das Objekte in relationalen Datenbanken abbildet. EloquentORM in Laravel ermöglicht Ihnen die Interaktion mit der Datenbank mithilfe einer objektorientierten Syntax. Sie können ORM verwenden, indem Sie Modellklassen definieren, Eloquent-Methoden verwenden oder in der Praxis ein Blog-System erstellen.

Laravel – Handwerkerbefehle Laravel – Handwerkerbefehle Aug 27, 2024 am 10:51 AM

Laravel – Artisan Commands – Laravel 5.7 bietet eine neue Möglichkeit, neue Befehle zu behandeln und zu testen. Es enthält eine neue Funktion zum Testen von Handwerkerbefehlen und die Demonstration wird unten erwähnt?

Analyse der Vor- und Nachteile von PHP-Unit-Test-Tools Analyse der Vor- und Nachteile von PHP-Unit-Test-Tools May 06, 2024 pm 10:51 PM

Analyse des PHP-Unit-Test-Tools: PHPUnit: Geeignet für große Projekte, bietet umfassende Funktionalität und ist einfach zu installieren, kann jedoch ausführlich und langsam sein. PHPUnitWrapper: geeignet für kleine Projekte, einfach zu verwenden, optimiert für Lumen/Laravel, verfügt jedoch über eingeschränkte Funktionalität, bietet keine Code-Coverage-Analyse und hat begrenzte Community-Unterstützung.

Vergleich der neuesten Versionen von Laravel und CodeIgniter Vergleich der neuesten Versionen von Laravel und CodeIgniter Jun 05, 2024 pm 05:29 PM

Die neuesten Versionen von Laravel 9 und CodeIgniter 4 bieten aktualisierte Funktionen und Verbesserungen. Laravel9 übernimmt die MVC-Architektur und bietet Funktionen wie Datenbankmigration, Authentifizierung und Template-Engine. CodeIgniter4 nutzt die HMVC-Architektur, um Routing, ORM und Caching bereitzustellen. In Bezug auf die Leistung sorgen das auf Dienstanbietern basierende Designmuster von Laravel9 und das leichte Framework von CodeIgniter4 für eine hervorragende Leistung. In praktischen Anwendungen eignet sich Laravel9 für komplexe Projekte, die Flexibilität und leistungsstarke Funktionen erfordern, während CodeIgniter4 für schnelle Entwicklung und kleine Anwendungen geeignet ist.

Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Wie vergleichen sich die Datenverarbeitungsfunktionen in Laravel und CodeIgniter? Jun 01, 2024 pm 01:34 PM

Vergleichen Sie die Datenverarbeitungsfunktionen von Laravel und CodeIgniter: ORM: Laravel verwendet EloquentORM, das eine relationale Klassen-Objekt-Zuordnung bereitstellt, während CodeIgniter ActiveRecord verwendet, um das Datenbankmodell als Unterklasse von PHP-Klassen darzustellen. Abfrage-Builder: Laravel verfügt über eine flexible verkettete Abfrage-API, während der Abfrage-Builder von CodeIgniter einfacher und Array-basiert ist. Datenvalidierung: Laravel bietet eine Validator-Klasse, die benutzerdefinierte Validierungsregeln unterstützt, während CodeIgniter über weniger integrierte Validierungsfunktionen verfügt und eine manuelle Codierung benutzerdefinierter Regeln erfordert. Praxisfall: Beispiel einer Benutzerregistrierung zeigt Lar

PHP-Code-Unit-Tests und Integrationstests PHP-Code-Unit-Tests und Integrationstests May 07, 2024 am 08:00 AM

Leitfaden zum Testen von PHP-Einheiten und -Integrationen Unit-Tests: Konzentrieren Sie sich auf eine einzelne Code- oder Funktionseinheit und verwenden Sie PHPUnit, um Testfallklassen zur Überprüfung zu erstellen. Integrationstests: Achten Sie darauf, wie mehrere Codeeinheiten zusammenarbeiten, und verwenden Sie die Methoden setUp() und TearDown() von PHPUnit, um die Testumgebung einzurichten und zu bereinigen. Praktischer Fall: Verwenden Sie PHPUnit, um Unit- und Integrationstests in Laravel-Anwendungen durchzuführen, einschließlich der Erstellung von Datenbanken, dem Starten von Servern und dem Schreiben von Testcode.

Laravel vs CodeIgniter: Welches Framework ist besser für große Projekte? Laravel vs CodeIgniter: Welches Framework ist besser für große Projekte? Jun 04, 2024 am 09:09 AM

Bei der Auswahl eines Frameworks für große Projekte haben Laravel und CodeIgniter jeweils ihre eigenen Vorteile. Laravel ist für Anwendungen auf Unternehmensebene konzipiert und bietet modularen Aufbau, Abhängigkeitsinjektion und einen leistungsstarken Funktionsumfang. CodeIgniter ist ein leichtes Framework, das sich eher für kleine bis mittelgroße Projekte eignet und Wert auf Geschwindigkeit und Benutzerfreundlichkeit legt. Für große Projekte mit komplexen Anforderungen und einer großen Anzahl von Benutzern sind die Leistung und Skalierbarkeit von Laravel besser geeignet. Für einfache Projekte oder Situationen mit begrenzten Ressourcen sind die leichten und schnellen Entwicklungsfunktionen von CodeIgniter idealer.

See all articles