{"id":26120,"date":"2021-06-12T16:55:00","date_gmt":"2021-06-12T13:55:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26120"},"modified":"2021-10-18T03:01:27","modified_gmt":"2021-10-18T00:01:27","slug":"accedi-a-google-in-laravel-utilizzando-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/accedi-a-google-in-laravel-utilizzando-laravel-socialite\/","title":{"rendered":"Accedi a Google in Laravel utilizzando Laravel Socialite"},"content":{"rendered":"<p>Recentemente ho pubblicato un articolo <a href=\"https:\/\/themewp.inform.click\/it\/accedi-con-linkedin-in-laravel-utilizzando-laravel-socialite\/\" title=\"Accedi con LinkedIn utilizzando Laravel Socialite\" >Accedi con LinkedIn utilizzando Laravel Socialite<\/a> e uno dei nostri lettori ha chiesto informazioni sull&#8217;integrazione di Google Login in Laravel. L&#8217;accesso a Google \u00e8 anche una delle piattaforme popolari utilizzate per l&#8217;accesso social sul sito web.<\/p>\n<p>Quando consenti agli utenti di accedere con il loro profilo social sul tuo sito web, salti il \u200b\u200bprocesso di convalida della loro email. I tuoi utenti non devono seguire un processo di attivazione e-mail. Possiamo fare affidamento sui siti social poich\u00e9 hanno gi\u00e0 convalidato gli utenti sulla loro piattaforma. Offre una migliore esperienza utente per i tuoi utenti in quanto non hanno bisogno di ricordare le loro credenziali di accesso per il tuo sito Web e ti evita anche di aggiungere i codici per il flusso di verifica. \u00c8 una situazione vantaggiosa per tutti.<\/p>\n<p>In questo articolo, studiamo la guida passo passo sull&#8217;aggiunta di Google Login in Laravel utilizzando Laravel Socialite. Laravel socialite gestisce il flusso OAuth per l&#8217;accesso social dietro le quinte. Questo pacchetto accelera il processo di integrazione dell&#8217;accesso social su Laravel.<\/p>\n<p>Per questo tutorial, user\u00f2 una nuova installazione di Laravel, quindi esegui il comando seguente che installer\u00e0 Laravel per te:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel googlelogin<\/code><\/pre>\n<p>Dopo l&#8217;installazione di Laravel, crea un database e aggiungi le credenziali del database nel <code>.env<\/code>file. Poich\u00e9 stiamo aggiungendo l&#8217;accesso social nell&#8217;applicazione, aggiunger\u00f2 altre 2 colonne al file di migrazione utente predefinito e ne modificher\u00f2 un po&#8217; il codice.<\/p>\n<p>Apri il file di migrazione dell&#8217;utente e aggiungi il codice seguente al <code>up<\/code>metodo.<\/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;bigIncrements('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>Nel codice sopra ho aggiunto 2 colonne <code>provider<\/code>e <code>provider_id<\/code>che conterranno rispettivamente i valori &quot;google&quot; e l&#8217;ID profilo Google dell&#8217;utente. Crea la tabella &quot;utenti&quot; eseguendo il comando migrate.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>\u00c8 inoltre necessario aggiungere queste 2 colonne al 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 Google e ottieni le tue credenziali<\/h3>\n<p>Successivamente, dobbiamo creare un progetto sulla console delle API di Google. Richiederemo l&#8217;ID client e il segreto client dell&#8217;applicazione per completare il processo OAuth per gli utenti.<\/p>\n<p>Segui i passaggi seguenti per creare un progetto Google e ottenere le credenziali. Per motivi di tutorial, sto utilizzando l&#8217;URL del server locale. Puoi modificare questo URL in base alle tue esigenze.<\/p>\n<ul>\n<li>Vai alla <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Console<\/a> per gli <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sviluppatori di Google<\/a>.<\/li>\n<li>Fare clic sul menu a discesa e creare un nuovo progetto facendo clic sul segno (+). In alternativa, puoi anche selezionare il progetto esistente.<\/li>\n<li>Nella dashboard del progetto seleziona Credenziali dalla barra laterale.<\/li>\n<li>Nella scheda Credenziali, fai clic sul menu a discesa Crea credenziali e seleziona ID client OAuth.<\/li>\n<li>Selezionare l&#8217;applicazione Web dal tipo di applicazione. In URL di reindirizzamento autorizzati inserisci l&#8217;URL <code>http:\/\/localhost:8000\/google\/callback<\/code>.<\/li>\n<\/ul>\n<p>Una volta salvato, otterrai il popup insieme al tuo ID cliente e al segreto cliente. Copia queste chiavi che ci serviranno in pochi istanti.<\/p>\n<h3>Crea percorsi e controller<\/h3>\n<p>Sei pronto con le tue chiavi API. Ora per procedere ulteriormente dobbiamo creare percorsi, file blade e controller. Crea un <code>LoginController<\/code>usando il comando:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Successivamente, crea un file blade chiamato <code>login.blade.php<\/code>e aggiungi il codice HTML sottostante.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/google') }}\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with Google') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Chiama questa vista dal <code>index<\/code>metodo di <code>LoginController<\/code>.<\/p>\n<pre><code>public function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>Per chiamare questa vista, devi aggiungere un percorso per essa. Aggiungiamo anche alcuni altri percorsi che richiederanno per la 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>Notare che ho aggiunto un <code>home<\/code>percorso. Quando un utente acceder\u00e0 con Google, lo reindirizzer\u00f2 al <code>home<\/code>percorso. Lo tengo solo a scopo dimostrativo. Dovresti cambiare questo percorso con qualcos&#8217;altro.<\/p>\n<h3>Accedi a Google in Laravel utilizzando Laravel Socialite<\/h3>\n<p>Finora abbiamo finito con la configurazione di base richiesta per l&#8217;accesso social. Adesso. \u00e8 ora di installare la libreria <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Laravel Socialite<\/a>. Installalo eseguendo il comando seguente nel terminale.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Dopo l&#8217;installazione della libreria, apri <code>config\/services.php<\/code>e aggiungi la configurazione di Google come segue:<\/p>\n<pre><code>'google' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id'\u00a0\u00a0\u00a0\u00a0 =&gt; env('GOOGLE_CLIENT_ID'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('GOOGLE_CLIENT_SECRET'),\n\u00a0\u00a0\u00a0\u00a0'redirect'\u00a0\u00a0\u00a0\u00a0\u00a0 =&gt; env('GOOGLE_REDIRECT_URL'),\n],<\/code><\/pre>\n<p>Poich\u00e9 abbiamo utilizzato il <code>env<\/code>metodo per ottenere le credenziali, \u00e8 necessario aggiungere queste credenziali nel <code>.env<\/code>file.<\/p>\n<pre><code>GOOGLE_CLIENT_ID=YOUR_CLIENT_ID\nGOOGLE_CLIENT_SECRET=YOUR_CLIENT_SECRET\nGOOGLE_REDIRECT_URL=http:\/\/localhost:8000\/google\/callback<\/code><\/pre>\n<p>Assicurati di sostituire i segnaposto con i valori effettivi. Infine, dobbiamo aggiungere il codice nel <code>LoginController.php<\/code>file che reindirizza l&#8217;utente alla pagina di accesso di Google e in cambio gestisce la risposta. In questo file, stiamo scrivendo una funzione che reindirizza un utente alla pagina di accesso di Google e, in caso di autorizzazione riuscita, inserir\u00e0 i dettagli dell&#8217;utente nel database e far\u00e0 accedere l&#8217;utente.<\/p>\n<p><strong>LoginController.php<\/strong><\/p>\n<pre><code>&lt;?php\n\u00a0\u00a0\nnamespace AppHttpControllers;\n\u00a0\u00a0\nuse IlluminateHttpRequest;\nuse Socialite;\nuse AppModelsUser;\nuse Auth;\n\u00a0\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\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\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Redirect the user to the Google 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;redirect();\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\/**\n\u00a0\u00a0\u00a0\u00a0\u00a0* Obtain the user information from Google.\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\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 file controller, stiamo controllando se l&#8217;utente con <code>provider_id<\/code>esiste gi\u00e0 o meno. Se esiste, restituisci l&#8217;istanza utente corrente, altrimenti inseriscila nella tabella utenti e accedi all&#8217;utente.<\/p>\n<p>Spero che tu sia venuto a conoscenza di Google Login in Laravel utilizzando il pacchetto Socialite. 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-con-linkedin-in-laravel-utilizzando-laravel-socialite\/\" title=\"Accedi con LinkedIn in Laravel utilizzando Laravel Socialite\">Accedi con LinkedIn in Laravel utilizzando Laravel Socialite<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/accedi-con-twitter-in-laravel-utilizzando-laravel-socialite\/\" title=\"Accedi con Twitter in Laravel utilizzando Laravel Socialite\">Accedi con Twitter 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<\/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, studiamo Google Login in Laravel utilizzando Laravel Socialite. L&#8217;utilizzo dell&#8217;accesso social offre una migliore esperienza utente all&#8217;utente finale<\/p>\n","protected":false},"author":1,"featured_media":20248,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[500],"tags":[846],"class_list":["post-26120","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\/26120","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=26120"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/26120\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/20248"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=26120"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=26120"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=26120"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}