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
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).
per favore dammi una soluzione
http://awesomescreenshot.com/0af5iogz93
quando clicco su accedi con il link di Facebook si è verificato questo errore
Di base
Sembra che la tua migrazione non abbia il campo per facebook_id.
manca questo o mi sfugge qualcosa?
Sì, era un errore, l'ho incluso ora!
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?
tutto funziona ma il campo email è sempre nullo. Come posso ottenere il campo email dopo aver effettuato l'accesso tramite Facebook
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