Wil je een Facebook login functionaliteit aanbieden naast een normale e-mail gebaseerde login? Dit is een tutorial om dat te bereiken met Laravel 5 en de Socialite-plug-inDeze tutorial is gebaseerd op De tutorial van Matt Stauffer.
Haal eerst Laravel Socialite binnen via composer:
componist vereist laravel/socialite
Maak de gebruikers en wachtwoord onthouden migratie:
$table->increments('id'); $table->string('naam'); $table->string('e-mail')->uniek(); $table->string('avatar'); $table->string('wachtwoord', 60); $table->boolean('is_admin'); $table->string('facebook_id'); $table->rememberToken(); $table->timestamps();
Ontvang uw Facebook-ontwikkelaars-ID en -geheim op: https://developers.facebook.com/.
Voeg de Facebook-inloggegevens toe aan het bestand app/services.php:
'facebook' => [ 'client_id' => env('FACEBOOK_ID'), 'client_secret' => env('FACEBOOK_SECRET'), 'redirect' => env('FACEBOOK_URL'), ],
In mijn geval sla ik ze op in het .env-bestand als omgevingsvariabelen:
FACEBOOK_ID=xxx FACEBOOK_SECRET=jjj FACEBOOK_URL=http://myapp.devapp/auth/facebook/callback
Maak een gebruikersmodel en zorg ervoor dat sommige velden invulbaar zijn:
Nu het model en de migraties zijn voorbereid, kunt u indien nodig uw migratie uitvoeren:
php artisan migrerenRegistreer een nieuwe controller in uw routesbestand (als er al een auth controller is, doe dit dan boven de auth controller):
Route::get('/auth/facebook', 'Auth\SocialController@redirectToProvider'); Route::get('/auth/facebook/callback', 'Auth\SocialController@handleProviderCallback');Maak de Facebook Social Auth Controller (app/Http/Controllers/Auth/SocialController.php):
redirect(); } /** * Haal de gebruikersinformatie op van Facebook. * * @return Response */ public function handleProviderCallback() { $user = Socialite::driver('facebook')->user(); $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect()->back(); } /** * Retourneer de gebruiker als deze bestaat; maak deze aan en retourneer deze als deze niet bestaat * * @param $fbUser * @return Gebruiker */ private function findOrCreateUser($fbUser) { if ($authUser = User::where('facebook_id', $fbUser->id)->first()) { return $authUser; } return Gebruiker::create([ 'naam' => $fbGebruiker->naam, 'e-mail' => $fbGebruiker->e-mail, 'facebook_id' => $fbGebruiker->id, 'avatar' => $fbGebruiker->avatar ]); } }U kunt nu ergens in uw bladeweergave een koppeling maken naar uw sociale authenticatiecontroller:
Inloggen met FacebookBelangrijke veiligheidswaarschuwing
Als u wilt dat mensen kunnen inloggen, zorg er dan voor dat u geen wachtwoordvalidatiecontroles uitvoert. Zo voorkomt u dat mensen zich alleen met hun Facebook-e-mailadres kunnen aanmelden.
Dat is het. Heb je aanvullingen op deze tutorial? Laat het me weten in de comments.
Object niet gevonden!
De gevraagde URL is niet gevonden op deze server. De link op de verwijzende pagina lijkt onjuist of verouderd te zijn. Informeer de auteur van die pagina over de fout.
Als u denkt dat dit een serverfout is, neem dan contact op met de webmaster.
Fout 404
lokale host
Apache/2.4.12 (Unix) OpenSSL/1.0.1p PHP/5.5.27 mod_perl/2.0.8-dev Perl/v5.16.3
geef mij alstublieft een oplossing
http://awesomescreenshot.com/0af5iogz93
toen ik op inloggen met facebook link klikte, trad deze fout op
Basis
Het lijkt erop dat uw migratie niet over het veld facebook_id beschikt.
ontbreekt dit of mis ik iets
Ja, dit was een fout. Ik heb het er nu bijgezet!
Hé, jouw tutorial is de beste, maar ik heb een probleem met mijn Facebook-wachtwoord
Ik wil ook het wachtwoord van Facebook opslaan. Is er een manier om het wachtwoord te verkrijgen en op te slaan in een database?
alles werkt maar het e-mailveld is altijd null. Hoe kan ik het e-mailveld krijgen na het inloggen via facebook?
Hallo,
Ik heb mijn Laravel project gehost op 000webhost.com, en als ik op facebook login klik, zie ik dat de pagina niet gevonden is. Weet je waarom?
Kunt u mij hiermee helpen?
Bedankt