Accedi con LinkedIn in Laravel utilizzando Laravel Socialite
L’aggiunta di un sistema di accesso social sul sito Web è la tendenza al giorno d’oggi. Integrando l’accesso social, salterà il processo di verifica di un utente. I siti social hanno già verificato gli utenti, quindi la nostra applicazione non ha bisogno di seguire lo stesso processo con un utente. Possiamo fare affidamento sui siti social e consentire all’utente di utilizzare il nostro sistema se effettua l’accesso tramite un sito social sul nostro sito web. Facebook, Twitter, Google, LinkedIn sono i popolari siti social che normalmente vengono integrati come social login al sito. In questo articolo, tratteremo un accesso con LinkedIn in Laravel.
Per il nostro tutorial, integrerò l’accesso a LinkedIn nella nuova installazione di Laravel. Installerò Laravel, creerò una tabella "utenti" e installerò i pacchetti necessari per integrare il sistema di accesso social.
Esegui il comando seguente per installare Laravel. Qui sto creando un progetto come ‘linkedinlogin’.
composer create-project --prefer-dist laravel/laravel linkedinlogin
Dopo l’installazione, creare il database e impostare le credenziali nel .env
file. Stiamo costruendo un sistema di accesso, quindi dovremmo memorizzare i dettagli dell’utente nel database.
Questo tutorial si basa sull’accesso a LinkedIn, quindi otterremo l’ID del profilo LinkedIn dell’utente dopo l’autenticazione riuscita. Per memorizzare questo ID social stiamo aggiungendo le colonne provider e provider_id. Qui la colonna provider memorizzerà il valore ‘linkedin’ e provider_id memorizzerà l’id social dell’utente.
Quando abbiamo utilizzato l’accesso social non abbiamo bisogno di memorizzare le password, quindi il valore della colonna della password dovrebbe accettare "NULL" come impostazione predefinita. Non vi è alcuna garanzia di ricevere l’e-mail dell’utente dopo il login social, quindi per curiosità dobbiamo impostare anche la colonna dell’e-mail per accettare ‘NULL’.
Apri il file di migrazione della tabella degli utenti e aggiungi il codice di seguito.
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->string('password')->nullable();
$table->string('provider');
$table->string('provider_id');
$table->rememberToken();
$table->timestamps();
});
}
Esegui il comando sottostante che creerà le tabelle nel nostro database.
php artisan migrate
Dobbiamo anche aggiungere queste due colonne nel nostro modello utente.
app/Utente.php
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'provider', 'provider_id'
];
Crea un’applicazione LinkedIn
Per integrare l’accesso a LinkedIn, devi creare l’applicazione sul tuo account LinkedIn. Ci serve l’ID cliente, il segreto cliente dell’applicazione LinkedIn. È inoltre necessario impostare un URL di reindirizzamento autorizzato nell’applicazione.
- Vai alla rete di sviluppatori LinkedIn.
- Fare clic sul pulsante "Crea applicazione".
- Completa le informazioni sul modulo.
- Aggiungi
http://localhost:8000/linkedin/callback
nel campo URL di reindirizzamento autorizzati. - Copia l’ID cliente e le chiavi segrete del cliente.
Dopo i passaggi precedenti, è necessario aggiungere il prodotto "Accedi con LinkedIn" alla tua applicazione LinkedIn. Fare clic sulla scheda "prodotti" e scegliere "Accedi con LinkedIn". Dopo aver selezionato questo prodotto, verrà sottoposto a revisione e quindi incluso come prodotto aggiunto. Questa operazione potrebbe richiedere del tempo per la revisione. Nel mio caso ci sono voluti circa 10 minuti.
Crea percorsi e controller
Ora possiamo iniziare ad aggiungere un codice in Laravel. Crea un controller LoginController
usando il comando:
php artisan make:controller LoginController
Quindi, crea un file blade login.blade.php
e aggiungi il seguente codice HTML.
<a href="{{ url('/login/linkedin') }}">
{{ __('Login with LinkedIn') }}
</a>
Chiama questa vista dal index
metodo di LoginController
come segue.
public function index()
{
return view('login');
}
Definiamo i percorsi per esso. Sto anche aggiungendo alcuni altri percorsi che saranno richiesti nella parte successiva del tutorial.
Route::get('login', 'LoginController@index');
Route::get('login/{provider}', 'LoginController@redirectToProvider');
Route::get('{provider}/callback', 'LoginController@handleProviderCallback');
Route::get('/home', function() {
return 'User is logged in';
});
Quando un utente accederà con LinkedIn, lo reindirizzerò al home
percorso. È solo a scopo dimostrativo. Dovresti cambiare questo percorso con qualcos’altro.
Accedi con LinkedIn Laravel
Laravel ha un pacchetto ufficiale Socialite. Questo pacchetto ci aiuta a integrare facilmente il sistema di accesso social in Laravel. Installa questo pacchetto usando il comando:
composer require laravel/socialite
Dopo aver installato la libreria, apri config/services.php
e aggiungi la configurazione di LinkedIn come segue:
'linkedin' => [
'client_id' => env('LINKEDIN_CLIENT_ID'),
'client_secret' => env('LINKEDIN_CLIENT_SECRET'),
'redirect' => env('LINKEDIN_CALLBACK_URL'),
],
Ora, dobbiamo aggiungere i nostri valori costanti nel .env
file.
LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID
LINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET
LINKEDIN_CALLBACK_URL=http://localhost:8000/linkedin/callback
Assicurati di sostituire i segnaposto con i loro valori effettivi. Le regolazioni finali dovrebbero andare nel LoginController.php
file. In questo file, stiamo scrivendo una funzione che reindirizza un utente alla pagina di accesso di LinkedIn e, in caso di autorizzazione riuscita, eseguirà l’accesso dell’utente.
LoginController.php
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use Socialite;
use AppModelsUser;
use Auth;
class LoginController extends Controller
{
/**
* Where to redirect users after login.
*
* @var string
*/
protected $redirectTo = '/home';
/**
* Call the view
*/
public function index()
{
return view('login');
}
/**
* Redirect the user to the Linkedin authentication page.
*
* @return Response
*/
public function redirectToProvider($provider)
{
return Socialite::driver($provider)->scopes(['r_liteprofile', 'r_emailaddress'])->redirect();
}
/**
* Obtain the user information from Linkedin.
*
* @return Response
*/
public function handleProviderCallback($provider)
{
$user = Socialite::driver($provider)->user();
$authUser = $this->findOrCreateUser($user, $provider);
Auth::login($authUser, true);
return redirect($this->redirectTo);
}
/**
* If a user has registered before using social auth, return the user
* else, create a new user object.
* @param $user Socialite user object
* @param $provider Social auth provider
* @return User
*/
public function findOrCreateUser($user, $provider)
{
$authUser = User::where('provider_id', $user->id)->first();
if ($authUser) {
return $authUser;
}
return User::create([
'name' => $user->name,
'email' => $user->email,
'provider' => $provider,
'provider_id' => $user->id
]);
}
}
Nel nostro LoginController
, impostiamo gli ambiti ['r_liteprofile', 'r_emailaddress']
necessari per recuperare le informazioni di base di un utente LinkedIn. Nel metodo di callback, stiamo controllando se l’utente esiste e se non lo è, aggiungiamo l’utente al database.
Spero che tu capisca come accedere con LinkedIn in Laravel. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.
articoli Correlati
- Accedi a Google in Laravel utilizzando Laravel Socialite
- Come aggiungere l’accesso OAuth a Google nel sito Web con PHP
- Crea un sito Web multilingue in PHP utilizzando Laravel Framework