Heim > PHP-Framework > Laravel > Laravel-Entwicklung: Wie implementiert man Social Login mit Laravel Socialite und Facebook?

Laravel-Entwicklung: Wie implementiert man Social Login mit Laravel Socialite und Facebook?

WBOY
Freigeben: 2023-06-13 11:39:36
Original
944 Leute haben es durchsucht

Laravel ist ein beliebtes PHP-Framework für die Entwicklung von Webanwendungen, das eine präzise und elegante Syntax bietet, um Entwicklern dabei zu helfen, Anwendungen schneller zu erstellen. Laravel Socialite ist ein Plug-in für Laravel, das Sie bei der Implementierung von Social Login mithilfe von APIs unterstützt, die von Social-Media-Plattformen wie Facebook, Twitter und Google bereitgestellt werden. In diesem Artikel stellen wir vor, wie man Social Login mit Laravel Socialite und Facebook implementiert.

  1. Installieren Sie Laravel Socialite

Um Laravel Socialite mit Laravel zu verwenden, müssen Sie es zuerst installieren. Sie können Laravel Socialite mit Composer in Ihrem Laravel-Projekt installieren. Navigieren Sie im Terminal zum Projektverzeichnis und führen Sie den folgenden Befehl zur Installation aus:

composer require laravel/socialite
Nach dem Login kopieren
  1. Facebook-Anwendung erstellen und Anmeldeinformationen für die Anwendung erhalten

Bevor Sie die Facebook-Anmeldung verwenden, müssen Sie eine Facebook-Anwendung erstellen. Melden Sie sich zunächst auf der Facebook Developers-Website unter https://developers.facebook.com an und erstellen Sie mit Ihren Facebook-Anmeldeinformationen eine neue Anwendung.

Besorgen Sie sich nach dem Erstellen der App die App-Anmeldeinformationen, klicken Sie auf „Einstellungen“ -> „Grundlegend“ und kopieren Sie Ihre App-ID und Ihr App-Geheimnis (Geheimschlüssel) in einen beliebigen Texteditor. Wir werden sie später benötigen.

  1. Env-Datei ändern

Suchen Sie die Datei „.env“ im Stammverzeichnis Ihres Laravel-Projekts und fügen Sie am Ende der Datei Folgendes hinzu:

FACEBOOK_ID=your_facebook_app_id_here
FACEBOOK_SECRET=your_facebook_app_secret_here
FACEBOOK_CALLBACK_URL=http://your_website_url_here/auth/facebook/callback
Nach dem Login kopieren

Bitte verwenden Sie die „Anwendungs-ID“, die Sie von der Facebook-Entwickler-Website erhalten haben und „Secret Key“ ersetzen den Text in „your_facebook_app_id_here“ und „your_facebook_app_secret_here“. Bitte stellen Sie sicher, dass Sie /auth/facebook/callback am Ende des FACEBOOK_CALLBACK_URL-Werts hinzufügen, um nach einer erfolgreichen Facebook-Anmeldung zur Rückruf-URL Ihrer Anwendung umzuleiten.

  1. Routen und Controller erstellen

Um die Facebook-Anmeldung zu implementieren, müssen wir zwei Routen und einen Controller erstellen. Die Route leitet den Benutzer zu Facebook und dem Facebook-Login-Rückruf weiter.

//引导用户前往 Facebook 登录页面
Route::get('facebook', function () {
    return Socialite::driver('facebook')->redirect();
});

//Facebook 登录回调
Route::get('auth/facebook/callback', 'AuthFacebookController@handleCallback');
Nach dem Login kopieren

Der Controller wird benötigt, um die Antwort von Facebook zu verarbeiten und Benutzer in Ihrer Anwendung zu erstellen oder zu aktualisieren. Erstellen Sie FacebookController mit dem folgenden Befehl:

php artisan make:controller Auth/FacebookController
Nach dem Login kopieren

In FacebookController müssen wir die Methode handleCallback schreiben, um Facebook-Antworten zu verarbeiten und Benutzer in der Datenbank zu erstellen oder zu aktualisieren.

<?php
namespace AppHttpControllersAuth;
use AppUser;
use IlluminateHttpRequest;
use AppHttpControllersController;
use LaravelSocialiteFacadesSocialite;
class FacebookController extends Controller {
    public function handleCallback(Request $request) {
        try {
            // 从 Facebook 获取用户信息
            $user = Socialite::driver('facebook')->user();
        } catch (Exception $e) {
            // 如果 Facebook 验证失败,重定向到登录页
            return redirect('login');
        }
        // 查找用户
        $authUser = $this->findOrCreateUser($user);
        // 登录用户
        auth()->login($authUser, true);
        // 重定向到应用程序首页
        return redirect()->route('home');
    }
    private function findOrCreateUser($facebookUser) {
        // 根据 Facebook 用户 ID 和服务提供商名称查找用户
        $authUser = User::where('facebook_id', $facebookUser->getId())
            ->where('provider', 'facebook')
            ->first();
        if ($authUser) {
            return $authUser;
        }
        // 如果未找到该用户,创建一个新用户
        return User::create([
            'name' => $facebookUser->getName(),
            'email' => $facebookUser->getEmail(),
            'facebook_id' => $facebookUser->getId(),
            'provider' => 'facebook',
            'avatar' => $facebookUser->getAvatar(),
            'password' => md5(rand(1,10000)),
        ]);
    }
} 
Nach dem Login kopieren

Beachten Sie, dass wir hier md5(rand(1,10000)) verwenden, um das zufällige Passwort des Benutzers festzulegen.

  1. Zu diesem Zeitpunkt ist die Implementierung des Social Login abgeschlossen.

Jetzt können Sie auf die „/facebook“-Route der Anwendung zugreifen und den Anmeldevorgang abschließen, indem Sie auf „Facebook-Anmeldung“ klicken.

Mit Laravel Socialite und Facebook wird die Implementierung von Social Login sehr einfach und kann Ihren Arbeitsaufwand erheblich reduzieren. Laravel und einige andere PHP-Frameworks bieten Entwicklern viele benutzerfreundliche Tools zum Erstellen großartiger Webanwendungen, wie zum Beispiel hier Social Login.

Das obige ist der detaillierte Inhalt vonLaravel-Entwicklung: Wie implementiert man Social Login mit Laravel Socialite und Facebook?. 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