Heim  >  Artikel  >  PHP-Framework  >  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
WBOYOriginal
2023-06-13 22:09:10706Durchsuche

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');
  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');

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();
}
  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();
}

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')
    ]

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');

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

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();
    }
}

Hier sind die im Controller vorgenommenen Änderungen.

php artisan make:controller SocialAuthController

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');
    }
}

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

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');

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!

Stellungnahme:
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