{"id":26101,"date":"2021-06-12T12:21:00","date_gmt":"2021-06-12T09:21:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26101"},"modified":"2021-10-18T03:01:31","modified_gmt":"2021-10-18T00:01:31","slug":"accedi-con-linkedin-in-laravel-utilizzando-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/accedi-con-linkedin-in-laravel-utilizzando-laravel-socialite\/","title":{"rendered":"Accedi con LinkedIn in Laravel utilizzando Laravel Socialite"},"content":{"rendered":"<p>L&#8217;aggiunta di un sistema di accesso social sul sito Web \u00e8 la tendenza al giorno d&#8217;oggi. Integrando l&#8217;accesso social, salter\u00e0 il processo di verifica di un utente. I siti social hanno gi\u00e0 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&#8217;utente di utilizzare il nostro sistema se effettua l&#8217;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.<\/p>\n<p>Per il nostro tutorial, integrer\u00f2 l&#8217;accesso a LinkedIn nella nuova installazione di Laravel. Installer\u00f2 Laravel, creer\u00f2 una tabella &quot;utenti&quot; e installer\u00f2 i pacchetti necessari per integrare il sistema di accesso social.<\/p>\n<p>Esegui il comando seguente per installare Laravel. Qui sto creando un progetto come &#8216;linkedinlogin&#8217;.<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel linkedinlogin<\/code><\/pre>\n<p>Dopo l&#8217;installazione, creare il database e impostare le credenziali nel <code>.env<\/code>file. Stiamo costruendo un sistema di accesso, quindi dovremmo memorizzare i dettagli dell&#8217;utente nel database.<\/p>\n<p>Questo tutorial si basa sull&#8217;accesso a LinkedIn, quindi otterremo l&#8217;ID del profilo LinkedIn dell&#8217;utente dopo l&#8217;autenticazione riuscita. Per memorizzare questo ID social stiamo aggiungendo le colonne provider e provider_id. Qui la colonna provider memorizzer\u00e0 il valore &#8216;linkedin&#8217; e provider_id memorizzer\u00e0 l&#8217;id social dell&#8217;utente.<\/p>\n<p>Quando abbiamo utilizzato l&#8217;accesso social non abbiamo bisogno di memorizzare le password, quindi il valore della colonna della password dovrebbe accettare &quot;NULL&quot; come impostazione predefinita. Non vi \u00e8 alcuna garanzia di ricevere l&#8217;e-mail dell&#8217;utente dopo il login social, quindi per curiosit\u00e0 dobbiamo impostare anche la colonna dell&#8217;e-mail per accettare &#8216;NULL&#8217;.<\/p>\n<p>Apri il file di migrazione della tabella degli utenti e aggiungi il codice di seguito.<\/p>\n<pre><code>\/**\n\u00a0* Run the migrations.\n\u00a0*\n\u00a0* @return void\n\u00a0*\/\npublic function up()\n{\n\u00a0\u00a0\u00a0\u00a0Schema::create('users', function (Blueprint $table) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;increments('id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('name');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('email')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamp('email_verified_at')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('password')-&gt;nullable();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('provider');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;string('provider_id');\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;rememberToken();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$table-&gt;timestamps();\n\u00a0\u00a0\u00a0\u00a0});\n}<\/code><\/pre>\n<p>Esegui il comando sottostante che creer\u00e0 le tabelle nel nostro database.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>Dobbiamo anche aggiungere queste due colonne nel nostro modello utente.<\/p>\n<p><strong>app\/Utente.php<\/strong><\/p>\n<pre><code>\/**\n\u00a0* The attributes that are mass assignable.\n\u00a0*\n\u00a0* @var array\n\u00a0*\/\nprotected $fillable = [\n\u00a0\u00a0\u00a0\u00a0'name', 'email', 'password', 'provider', 'provider_id'\n];<\/code><\/pre>\n<h3>Crea un&#8217;applicazione LinkedIn<\/h3>\n<p>Per integrare l&#8217;accesso a LinkedIn, devi creare l&#8217;applicazione sul tuo account LinkedIn. Ci serve l&#8217;ID cliente, il segreto cliente dell&#8217;applicazione LinkedIn. \u00c8 inoltre necessario impostare un URL di reindirizzamento autorizzato nell&#8217;applicazione.<\/p>\n<ul>\n<li>Vai alla <a href=\"https:\/\/www.linkedin.com\/secure\/developer\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">rete di sviluppatori LinkedIn<\/a>.<\/li>\n<li>Fare clic sul pulsante &quot;Crea applicazione&quot;.<\/li>\n<li>Completa le informazioni sul modulo.<\/li>\n<li>Aggiungi <code>http:\/\/localhost:8000\/linkedin\/callback<\/code>nel campo URL di reindirizzamento autorizzati.<\/li>\n<li>Copia l&#8217;ID cliente e le chiavi segrete del cliente.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" alt=\"Accedi con LinkedIn in Laravel utilizzando Laravel Socialite\" ><\/a><\/p>\n<p>Dopo i passaggi precedenti, \u00e8 necessario aggiungere il prodotto &quot;Accedi con LinkedIn&quot; alla tua applicazione LinkedIn. Fare clic sulla scheda &quot;prodotti&quot; e scegliere &quot;Accedi con LinkedIn&quot;. Dopo aver selezionato questo prodotto, verr\u00e0 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.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20253-6081d37e35c27.png\" alt=\"Accedi con LinkedIn in Laravel utilizzando Laravel Socialite\" ><\/a><\/p>\n<h3>Crea percorsi e controller<\/h3>\n<p>Ora possiamo iniziare ad aggiungere un codice in Laravel. Crea un controller <code>LoginController<\/code>usando il comando:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Quindi, crea un file blade <code>login.blade.php<\/code>e aggiungi il seguente codice HTML.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/linkedin') }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with LinkedIn') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Chiama questa vista dal <code>index<\/code>metodo di <code>LoginController<\/code>come segue.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>Definiamo i percorsi per esso. Sto anche aggiungendo alcuni altri percorsi che saranno richiesti nella parte successiva del tutorial.<\/p>\n<pre><code>Route::get('login', 'LoginController@index');\nRoute::get('login\/{provider}', 'LoginController@redirectToProvider');\nRoute::get('{provider}\/callback', 'LoginController@handleProviderCallback');\nRoute::get('\/home', function() {\n\u00a0\u00a0\u00a0\u00a0return 'User is logged in';\n});<\/code><\/pre>\n<p>Quando un utente acceder\u00e0 con LinkedIn, lo reindirizzer\u00f2 al <code>home<\/code>percorso. \u00c8 solo a scopo dimostrativo. Dovresti cambiare questo percorso con qualcos&#8217;altro.<\/p>\n<h3>Accedi con LinkedIn Laravel<\/h3>\n<p>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:<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Dopo aver installato la libreria, apri <code>config\/services.php<\/code>e aggiungi la configurazione di LinkedIn come segue:<\/p>\n<pre><code>'linkedin' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; env('LINKEDIN_CLIENT_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('LINKEDIN_CLIENT_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect' =&gt; env('LINKEDIN_CALLBACK_URL'),\n],<\/code><\/pre>\n<p>Ora, dobbiamo aggiungere i nostri valori costanti nel <code>.env<\/code>file.<\/p>\n<pre><code>LINKEDIN_CLIENT_ID=YOUR_CLIENT_ID\nLINKEDIN_CLIENT_SECRET=YOUR_CLIENT_SECRET\nLINKEDIN_CALLBACK_URL=http:\/\/localhost:8000\/linkedin\/callback<\/code><\/pre>\n<p>Assicurati di sostituire i segnaposto con i loro valori effettivi. Le regolazioni finali dovrebbero andare nel <code>LoginController.php<\/code>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\u00e0 l&#8217;accesso dell&#8217;utente.<\/p>\n<p><strong>LoginController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\nnamespace AppHttpControllers;\n\u00a0\nuse IlluminateHttpRequest;\nuse Socialite;\nuse AppModelsUser;\nuse Auth;\n\u00a0\nclass LoginController extends Controller\n{\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Where to redirect users after login.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @var string\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0protected $redirectTo = '\/home';\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Call the view\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function index()\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return view('login');\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Redirect the user to the Linkedin authentication page.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Response\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function redirectToProvider($provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return Socialite::driver($provider)-&gt;scopes(['r_liteprofile', 'r_emailaddress'])-&gt;redirect();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Obtain the user information from Linkedin.\n\u00a0\u00a0\u00a0\u00a0\u00a0*\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return Response\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function handleProviderCallback($provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$user = Socialite::driver($provider)-&gt;user();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$authUser = $this-&gt;findOrCreateUser($user, $provider);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0Auth::login($authUser, true);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return redirect($this-&gt;redirectTo);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* If a user has registered before using social auth, return the user\n\u00a0\u00a0\u00a0\u00a0\u00a0* else, create a new user object.\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param\u00a0 $user Socialite user object\n\u00a0\u00a0\u00a0\u00a0\u00a0* @param $provider Social auth provider\n\u00a0\u00a0\u00a0\u00a0\u00a0* @return\u00a0 User\n\u00a0\u00a0\u00a0\u00a0\u00a0*\/\n\u00a0\u00a0\u00a0\u00a0public function findOrCreateUser($user, $provider)\n\u00a0\u00a0\u00a0\u00a0{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$authUser = User::where('provider_id', $user-&gt;id)-&gt;first();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if ($authUser) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $authUser;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return User::create([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'name'\u00a0\u00a0\u00a0\u00a0 =&gt; $user-&gt;name,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'email'\u00a0\u00a0\u00a0 =&gt; $user-&gt;email,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider' =&gt; $provider,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'provider_id' =&gt; $user-&gt;id\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Nel nostro <code>LoginController<\/code>, impostiamo gli ambiti <code>['r_liteprofile',\u00a0'r_emailaddress']<\/code>necessari per recuperare le informazioni di base di un utente LinkedIn. Nel metodo di callback, stiamo controllando se l&#8217;utente esiste e se non lo \u00e8, aggiungiamo l&#8217;utente al database.<\/p>\n<p>Spero che tu capisca come accedere con LinkedIn in Laravel. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/accedi-a-google-in-laravel-utilizzando-laravel-socialite\/\" title=\"Accedi a Google in Laravel utilizzando Laravel Socialite\">Accedi a Google in Laravel utilizzando Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-aggiungere-l-accesso-oauth-a-google-nel-sito-web-con-php\/\" title=\"Come aggiungere l&#039;accesso OAuth a Google nel sito Web con PHP\">Come aggiungere l&#8217;accesso OAuth a Google nel sito Web con PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/crea-un-sito-web-multilingue-in-php-utilizzando-laravel-framework\/\" title=\"Crea un sito Web multilingue in PHP utilizzando Laravel Framework\">Crea un sito Web multilingue in PHP utilizzando Laravel Framework<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questo articolo, ti mostro come aggiungere l&#8217;accesso con LinkedIn utilizzando Laravel Socialite nella tua applicazione Laravel. Usando l&#8217;accesso social i tuoi utenti<\/p>\n","protected":false},"author":1,"featured_media":20254,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[500],"tags":[846],"class_list":["post-26101","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/26101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=26101"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/26101\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/20254"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=26101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=26101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=26101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}