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?

WBOY
Freigeben: 2023-06-13 22:09:10
Original
762 Leute haben es durchsucht

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!

Verwandte Etiketten:
Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage