{"id":26111,"date":"2021-06-12T19:02:00","date_gmt":"2021-06-12T16:02:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=26111"},"modified":"2021-10-18T03:01:23","modified_gmt":"2021-10-18T00:01:23","slug":"accedi-con-twitter-in-laravel-utilizzando-laravel-socialite","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/accedi-con-twitter-in-laravel-utilizzando-laravel-socialite\/","title":{"rendered":"Accedi con Twitter in Laravel utilizzando Laravel Socialite"},"content":{"rendered":"<p>Recentemente ho pubblicato un articolo su <a href=\"https:\/\/themewp.inform.click\/it\/come-aggiungere-l-accesso-oauth-a-twitter-nel-sito-web-con-php\/\" title=\"Login with Twitter in PHP\" >Login with Twitter in PHP<\/a>. Uno dei nostri lettori ha chiesto di scrivere un articolo sul login con Twitter in Laravel. Sebbene Laravel sia basato sul linguaggio di programmazione PHP e ho scritto sull&#8217;accesso a Twitter in PHP, so che il tutorial precedente non \u00e8 adatto per il framework Laravel. Laravel ha una propria struttura di cartelle, flusso di sviluppo. Uno sviluppatore dovrebbe seguire gli standard di Laravel durante la creazione di applicazioni web al suo interno.<\/p>\n<p>Laravel ha i suoi pacchetti ufficiali che aiutano gli sviluppatori a ottenere determinate funzionalit\u00e0. Uno dei pacchetti \u00e8 <a href=\"https:\/\/laravel.com\/docs\/master\/socialite\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Socialite<\/a>. Utilizzando Socialite, puoi integrare l&#8217;accesso social con diversi provider come Facebook, Twitter, LinkedIn, Google, ecc.<\/p>\n<p>In questo articolo, studiamo <strong>Login con Twitter in Laravel<\/strong> utilizzando Laravel Socialite.<\/p>\n<h3>Iniziare<\/h3>\n<p>Iniziamo con la nuova installazione di Laravel. Non \u00e8 obbligatorio utilizzare una nuova installazione di Laravel, puoi anche utilizzare il tuo progetto esistente.<\/p>\n<p>Per installare l&#8217;ultima versione di Laravel, esegui il comando seguente:<\/p>\n<pre><code>composer create-project --prefer-dist laravel\/laravel twitterlogin<\/code><\/pre>\n<p>Al momento dell&#8217;installazione, creare il database e aggiungere 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 su Accedi con Twitter, quindi otterremo l&#8217;ID Twitter dell&#8217;utente dopo l&#8217;autenticazione riuscita. Per memorizzare questo ID social stiamo aggiungendo colonne <code>provider<\/code>e <code>provider_id<\/code>alla tabella &quot;utenti&quot;. La colonna <code>provider<\/code>memorizzer\u00e0 il valore come &quot;twitter&quot; e una colonna <code>provider_id<\/code>\u00e8 per l&#8217;id Twitter dell&#8217;utente.<\/p>\n<p>Quando utilizziamo l&#8217;accesso social non \u00e8 necessario memorizzare le password, quindi la colonna della password dovrebbe accettare il valore &quot;NULL&quot; come impostazione predefinita. Non vi \u00e8 alcuna garanzia di ricevere l&#8217;e-mail dell&#8217;utente dopo l&#8217;accesso social, quindi per curiosit\u00e0 \u00e8 necessario impostare le colonne dell&#8217;e-mail anche per accettare il valore &#8216;NULL&#8217;.<\/p>\n<p>Apri il file di migrazione della tabella &quot;utenti&quot; 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>Dopodich\u00e9 esegui il comando di migrazione che creer\u00e0 tabelle nel tuo database.<\/p>\n<pre><code>php artisan migrate<\/code><\/pre>\n<p>\u00c8 inoltre necessario aggiungere le colonne <code>provider<\/code>e <code>provider_id<\/code>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>Ottieni credenziali Twitter<\/h3>\n<p>Poich\u00e9 integreremo l&#8217;accesso a Twitter in Laravel, devi prima ottenere le tue credenziali di Twitter. Segui i passaggi seguenti per creare un&#8217;app Twitter e ottenere le tue credenziali.<\/p>\n<ul>\n<li>Accedi <a href=\"https:\/\/dev.twitter.com\/apps\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">all&#8217;account sviluppatore di Twitter<\/a> e crea una nuova applicazione.<\/li>\n<li>Compila tutti i campi obbligatori come il nome dell&#8217;applicazione e la descrizione.<\/li>\n<li>Aggiungi il dominio del tuo sito web nel campo Sito web.<\/li>\n<li>Imposta l&#8217;URL di richiamata come <code>http:\/\/localhost:8000\/twitter\/callback<\/code>. Modifica l&#8217;URL in base alle tue esigenze.<\/li>\n<li>Una volta effettuata la registrazione, copia e incolla le credenziali dell&#8217;applicazione creata (Consumer Key e Secret) che richiedono in un certo tempo.<\/li>\n<\/ul>\n<p>Utilizzando queste credenziali copiate, la tua applicazione Laravel completer\u00e0 il flusso OAuth quando gli utenti accedono con il proprio account Twitter.<\/p>\n<h3>Crea percorsi e controller<\/h3>\n<p>Per includere la funzionalit\u00e0 di accesso con Twitter, dobbiamo aggiungere un codice nel nostro progetto Laravel. Creiamo un <code>LoginController<\/code>utilizzando il comando:<\/p>\n<pre><code>php artisan make:controller LoginController<\/code><\/pre>\n<p>Dobbiamo aggiungere un collegamento di accesso nel file blade. Crea un <code>login.blade.php<\/code>e aggiungi il seguente codice HTML ad esso.<\/p>\n<pre><code>&lt;a href=\"{{ url('\/login\/twitter') }}\" class=\"btn btn-success\"&gt;\n\u00a0\u00a0\u00a0\u00a0{{ __('Login with Twitter') }}\n&lt;\/a&gt;<\/code><\/pre>\n<p>Puoi chiamare questa vista dal <code>index<\/code>metodo di <code>LoginController<\/code>.<\/p>\n<pre><code>\/**\n\u00a0* Call the view\n\u00a0*\/\npublic function index()\n{\n\u00a0\u00a0\u00a0\u00a0return view('login');\n}<\/code><\/pre>\n<p>Quindi, aggiungi il percorso per esso. Sto anche aggiungendo alcuni altri percorsi che saranno necessari per la prossima parte 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>Dopo che l&#8217;utente avr\u00e0 effettuato l&#8217;accesso con Twitter, 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 Twitter a Laravel<\/h3>\n<p>\u00c8 ora di utilizzare il pacchetto Socialite ora. Usando il comando seguente puoi installare il pacchetto Socialite nel tuo progetto Laravel.<\/p>\n<pre><code>composer require laravel\/socialite<\/code><\/pre>\n<p>Dopo aver installato Socialite, dobbiamo configurarlo. Apri <code>config\/services.php<\/code>e aggiungi la configurazione di Twitter a questo file come segue:<\/p>\n<pre><code>'twitter' =&gt; [\n\u00a0\u00a0\u00a0\u00a0'client_id' =&gt; env('TWITTER_API_KEY'),\n\u00a0\u00a0\u00a0\u00a0'client_secret' =&gt; env('TWITTER_API_SECRET_KEY'),\n\u00a0\u00a0\u00a0\u00a0'redirect' =&gt; env('TWITTER_CALLBACK_URL'),\n],<\/code><\/pre>\n<p>Potresti notare che ho usato il <code>env<\/code>metodo per ottenere i valori specificati. Significa che dobbiamo definire queste costanti nel <code>.env<\/code>file.<\/p>\n<pre><code>TWITTER_API_KEY=PASTE_TWITTER_API_KEY\nTWITTER_API_SECRET_KEY=PASTE_TWITTER_API_SECRET_KEY\nTWITTER_CALLBACK_URL=http:\/\/localhost:8000\/twitter\/callback<\/code><\/pre>\n<p>Assicurati di sostituire i segnaposto con le tue chiavi API effettive. Successivamente nel <code>LoginController<\/code>, stiamo scrivendo una funzione che reindirizza un utente alla pagina di accesso di Twitter e, in caso di autorizzazione riuscita, effettuer\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\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 Twitter 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 Twitter.\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>Vai alla pagina di accesso e fai clic sul link &quot;Accedi con Twitter&quot;. Completa il processo e dovresti accedere al sistema utilizzando Twitter. Puoi anche trovare voci di utenti nella <code>users<\/code>tabella.<\/p>\n<p>Spero che tu possa conoscere l&#8217;accesso con Twitter in Laravel utilizzando il pacchetto Socialite. Mi piacerebbe sentire i tuoi pensieri o 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-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<\/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 tutorial, studiamo Login con Twitter in Laravel utilizzando il pacchetto Laravel Socialite. L&#8217;accesso social ti aiuta a saltare tutto<\/p>\n","protected":false},"author":1,"featured_media":20252,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[500],"tags":[846],"class_list":["post-26111","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\/26111","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=26111"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/26111\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/20252"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=26111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=26111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=26111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}