Laravel 5 socialite con integrazione di Facebook

Vorresti offrire una funzionalità di login tramite Facebook accanto a un normale login basato su e-mail? Questo è un tutorial per ottenerlo con Laravel 5 e Plugin SocialiteQuesto tutorial si basa su Tutorial di Matt Stauffer.

Per prima cosa, inserisci Laravel Socialite tramite composer:

compositore richiede laravel/socialite

Crea la migrazione utenti e password_remember:

$table->increments('id'); $table->string('nome'); $table->string('email')->unique(); $table->string('avatar'); $table->string('password', 60); $table->boolean('is_admin'); $table->string('facebook_id'); $table->rememberToken(); $table->timestamps();

Ottieni il tuo ID sviluppatore Facebook e il tuo segreto qui: https://developers.facebook.com/.

Inserisci le credenziali di Facebook nel file app/services.php:

'facebook' => [ 'client_id' => env('FACEBOOK_ID'), 'client_secret' => env('FACEBOOK_SECRET'), 'redirect' => env('FACEBOOK_URL'), ],

Nel mio caso, li memorizzo nel file .env come variabili d'ambiente:

FACEBOOK_ID=xxx FACEBOOK_SECRET=yyy FACEBOOK_URL=http://myapp.devapp/auth/facebook/callback

Crea un modello utente e assicurati che alcuni campi siano compilabili:

<?php namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends Model implements AuthenticatableContract, CanResetPasswordContract
{
    use Authenticatable, CanResetPassword;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = ['name', 'email', 'password', 'avatar', 'facebook_id'];

    /**
     * The attributes excluded from the model's JSON form.
     *
     * @var array
     */
    protected $hidden = ['password', 'remember_token'];
}

Una volta preparati il modello e le migrazioni, se necessario esegui la migrazione:

php artigianale migrare

Registra un nuovo controller nel tuo file di rotte (se esiste già un controller di autenticazione, fallo sopra il controller di autenticazione):

Percorso::get('/auth/facebook', 'Auth\SocialController@redirectToProvider'); Percorso::get('/auth/facebook/callback', 'Auth\SocialController@handleProviderCallback');

Crea il Facebook Social Auth Controller (app/Http/Controllers/Auth/SocialController.php):

redirect(); } /** * Ottieni le informazioni utente da Facebook. * * @return Response */ public function handleProviderCallback() { $user = Socialite::driver('facebook')->user(); $authUser = $this->findOrCreateUser($user); Auth::login($authUser, true); return redirect()->back(); } /** * Restituisce l'utente se esiste; crealo e restituiscilo se non esiste * * @param $fbUser * @return User */ private function findOrCreateUser($fbUser) { if ($authUser = User::where('facebook_id', $fbUser->id)->first()) { return $authUser; } return User::create([ 'nome' => $fbUser->nome, 'email' => $fbUser->email, 'facebook_id' => $fbUser->id, 'avatar' => $fbUser->avatar ]); } }

Ora puoi collegarti al tuo controller di autorizzazione social da qualche parte nella tua vista blade:

 Accedi con Facebook

Nota importante sulla sicurezza

Se vuoi che le persone possano continuare ad accedere, assicurati di avere i controlli di convalida della password vuoti, in modo che le persone non possano accedere solo con gli indirizzi e-mail di Facebook.

Ecco fatto. Hai aggiunte a questo tutorial? Fammelo sapere nei commenti.

Ultimo aggiornamento il 3 maggio 2018

9 commenti su “Laravel 5 socialite with Facebook integration”

  1. Oggetto non trovato!

    L'URL richiesto non è stato trovato su questo server. Il link sulla pagina di riferimento sembra essere sbagliato o obsoleto. Si prega di informare l'autore di quella pagina dell'errore.

    Se ritieni che si tratti di un errore del server, contatta il webmaster.
    Errore 404
    host locale
    Perl/v5.16.3 è un'estensione di Apache/2.4.12 (Unix).

  2. Ciao, il tuo tutorial è il migliore, ma ho un problema con la password di Facebook
    Voglio anche salvare la password di Facebook, c'è un metodo per ottenere la password e salvarla nel database?

  3. tutto funziona ma il campo email è sempre nullo. Come posso ottenere il campo email dopo aver effettuato l'accesso tramite Facebook

  4. Ciao,
    Ho ospitato il mio progetto Laravel su 000webhost.com e quando clicco su login facebook mi mostra pagina non trovata. Sai perché viene mostrato?
    Per favore aiutami con questo.
    Grazie

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

it_ITItaliano
Scorri verso l'alto