Möchten Sie neben einem regulären E-Mail-basierten Login auch eine Facebook-Login-Funktionalität anbieten? Dies ist ein Tutorial, um dies mit Laravel 5 und dem Socialite-PluginDieses Tutorial basiert auf Matt Stauffers Tutorial.
Als erstes laden wir Laravel Socialite über den Composer herunter:
Komponist erfordert Laravel/Socialite
Erstellen Sie die Migration „Benutzer“ und „Password_remember“:
$table->increments('id'); $table->string('name'); $table->string('email')->unique(); $table->string('avatar'); $table->string('password', 60); $table->boolean('is_admin'); $table->string('facebook_id'); $table->rememberToken(); $table->timestamps();
Holen Sie sich Ihre Facebook-Entwickler-ID und Ihr Geheimnis unter: https://developers.facebook.com/.
Fügen Sie die Facebook-Anmeldeinformationen in die Datei app/services.php ein:
'Facebook' => [ 'Client-ID' => Umgebung('FACEBOOK_ID'), 'Client-Geheimnis' => Umgebung('FACEBOOK_GEHEIMNIS'), 'Umleitung' => Umgebung('FACEBOOK_URL'), ],
In meinem Fall speichere ich sie als Umgebungsvariablen in der .env-Datei:
FACEBOOK_ID=xxx FACEBOOK_SECRET=yyy FACEBOOK_URL=http://myapp.devapp/auth/facebook/callback
Erstellen Sie ein Benutzermodell und stellen Sie sicher, dass einige Felder ausfüllbar sind:
Damit sind das Modell und die Migrationen vorbereitet. Führen Sie bei Bedarf Ihre Migration aus:
PHP Artisan migrierenRegistrieren Sie einen neuen Controller in Ihrer Routendatei (wenn bereits ein Authentifizierungscontroller vorhanden ist, tun Sie dies über dem Authentifizierungscontroller):
Route::get('/auth/facebook', 'Auth\SocialController@redirectToProvider'); Route::get('/auth/facebook/callback', 'Auth\SocialController@handleProviderCallback');Erstellen Sie den Facebook Social Auth Controller (app/Http/Controllers/Auth/SocialController.php):
redirect(); } /** * Benutzerinformationen von Facebook abrufen. * * @return Response */ public function handleProviderCallback() { $user = Socialite::driver('facebook')->user(); $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect()->back(); } /** * Benutzer zurückgeben, falls vorhanden; erstellen und zurückgeben, falls nicht * * @param $fbUser * @return User */ private function findOrCreateUser($fbUser) { if ($authUser = User::where('facebook_id', $fbUser->id)->first()) { return $authUser; } return Benutzer::erstellen([ 'Name' => $fbUser->Name, 'E-Mail' => $fbUser->E-Mail, 'Facebook-ID' => $fbUser->ID, 'Avatar' => $fbUser->Avatar ]); } }Sie können jetzt von irgendwo in Ihrer Blade-Ansicht aus eine Verknüpfung zu Ihrem Social-Auth-Controller herstellen:
Mit Facebook anmeldenWichtiger Sicherheitshinweis
Wenn Sie den Benutzern weiterhin die Möglichkeit zum Anmelden geben möchten, achten Sie darauf, dass Sie keine Kennwortvalidierungsprüfungen durchführen, sodass sich Benutzer nicht nur mit Facebook-E-Mail-Adressen anmelden können.
Das ist alles. Haben Sie Ergänzungen zu diesem Tutorial? Lassen Sie es mich in den Kommentaren wissen.
Objekt nicht gefunden!
Die angeforderte URL konnte auf diesem Server nicht gefunden werden. Der Link auf der verweisenden Seite scheint falsch oder veraltet zu sein. Bitte informieren Sie den Autor dieser Seite über den Fehler.
Wenn Sie glauben, dass es sich hierbei um einen Serverfehler handelt, wenden Sie sich bitte an den Webmaster.
Fehler 404
lokaler Host
Apache/2.4.12 (Unix) OpenSSL/1.0.1p PHP/5.5.27 mod_perl/2.0.8-dev Perl/v5.16.3
bitte geben Sie mir eine Lösung
http://awesomescreenshot.com/0af5iogz93
wenn ich auf den Link „Mit Facebook anmelden“ klicke, tritt dieser Fehler auf
Basic
Ihre Migration scheint das Feld für die Facebook-ID nicht zu haben.
fehlt das oder übersehe ich etwas
Ja, das war ein Fehler, ich habe es jetzt eingefügt!
hey, dein Tutorial ist das beste, aber ich habe ein Problem mit dem Facebook-Passwort
ich möchte auch das Facebook-Passwort speichern. Gibt es also eine Methode, um das Passwort abzurufen und in der Datenbank zu speichern?
alles funktioniert, aber das E-Mail-Feld ist immer leer. Wie kann ich nach der Anmeldung über Facebook das E-Mail-Feld abrufen?
Hallo,
Ich hoste mein Laravel-Projekt auf 000webhost.com und wenn ich auf Facebook-Login klicke, wird mir angezeigt, dass die Seite nicht gefunden wurde. Kennen Sie den Grund dafür?
Bitte helfen Sie mir dabei.
Danke