In questo articolo spiegherò come integrare l’accesso di Google nel tuo sito web PHP. Utilizzeremo l’API Google OAuth, che è un modo semplice e potente per aggiungere l’accesso Google al tuo sito.
Come utente web, probabilmente hai sperimentato il fastidio di gestire account diversi per siti diversi, in particolare quando disponi di più password per servizi diversi e un sito web ti chiede di creare ancora un altro account sul suo sito.
Per far fronte a questo, potresti offrire una funzionalità di accesso singolo per consentire ai visitatori di utilizzare le loro credenziali esistenti per aprire un account sul tuo sito. Oggigiorno molti siti Web consentono agli utenti di accedere utilizzando i propri account esistenti su Google, Facebook o altri servizi popolari. Questo è un modo conveniente per i nuovi utenti di registrarsi su un sito di terze parti invece di registrarsi per un nuovo account con ancora un altro nome utente e password.
In questo post utilizzeremo l’API di accesso Google OAuth, che consente agli utenti di accedere con i propri account Google esistenti. Naturalmente, gli utenti dovrebbero comunque essere in grado di registrarsi con il consueto modulo di registrazione sul tuo sito, ma fornire l’accesso a Google o qualcosa di simile può aiutare a mantenere un sano tasso di fidelizzazione degli utenti.
Come funziona l’accesso a Google
Esaminiamo rapidamente il flusso di dati di livello superiore dell’intero processo. Come puoi vedere nel diagramma seguente, ci sono tre entità principali coinvolte nel processo di accesso: l’utente, il sito web di terze parti e Google.
Ora, comprendiamo il flusso generale di come funziona l’accesso a Google sul tuo sito.
Nella pagina di accesso del tuo sito, ci sono due opzioni tra cui gli utenti possono scegliere per accedere. La prima è fornire un nome utente e una password se hanno già un account con il tuo sito. E l’altro è accedere al tuo sito con il loro account Google esistente.
Quando fanno clic sul pulsante Accedi con Google, viene avviato il flusso di accesso di Google e indirizza gli utenti al sito di Google per l’accesso. Una volta lì, accedono con le loro credenziali Google e successivamente verranno reindirizzati alla pagina di consenso.
Nella pagina di consenso, agli utenti verrà richiesta l’autorizzazione a condividere le informazioni del proprio account Google con il sito di terze parti. In questo caso, il sito di terze parti è un sito in cui desiderano utilizzare il proprio account Google per l’accesso. Verranno presentate loro due opzioni: possono consentire o negare.
Una volta acconsentito alla condivisione delle proprie informazioni con il sito di terze parti, verranno reindirizzati al sito di terze parti da cui hanno avviato il flusso di accesso a Google.
A questo punto, l’utente ha effettuato l’accesso con Google e il sito di terze parti ha accesso alle informazioni del profilo utente che possono essere utilizzate per creare un account ed effettuare l’accesso dell’utente. Questo è il flusso di base per integrare l’accesso di Google sul tuo sito. Il diagramma seguente offre una rapida panoramica dei passaggi appena discussi.
Nel resto del post implementeremo questo flusso di accesso in un esempio funzionante in PHP.
Impostazione del progetto per l’accesso a Google
In questa sezione, esamineremo la configurazione di base necessaria per integrare l’accesso di Google con il tuo sito web PHP.
Crea un progetto API di Google
Innanzitutto, devi creare un’applicazione con Google che ti consentirà di registrare il tuo sito con Google. Ti consente di impostare le informazioni di base sul tuo sito web e anche un paio di dettagli tecnici.
Una volta effettuato l’accesso con Google, apri la console per sviluppatori di Google. Ciò dovrebbe aprire la pagina Google Dashboard, come mostrato nello screenshot seguente.
Dal menu in alto a sinistra, fare clic sul collegamento Seleziona un progetto. Questo dovrebbe aprire un popup, come mostrato nello screenshot seguente.
Fai clic sul collegamento Nuovo progetto e ti verrà chiesto di inserire il nome del progetto e altri dettagli. Compila i dettagli necessari, come mostrato nell’esempio seguente.
Fai clic sul pulsante Crea per salvare il tuo nuovo progetto. Verrai reindirizzato alla pagina Dashboard. Fai clic sulle Credenziali nella barra laterale di sinistra e vai alla scheda della schermata di consenso OAuth.
In questa pagina, devi inserire i dettagli sulla tua applicazione, come il nome dell’applicazione, il logo e alcuni altri dettagli. Compila i dettagli necessari e salvali. A scopo di test, basta inserire il nome dell’applicazione.
Successivamente, fai clic su Credenziali nella barra laterale di sinistra. Questo dovrebbe mostrarti la casella Credenziali API nella scheda Credenziali, come mostrato nello screenshot seguente.
Fare clic su Credenziali client > ID client OAuth per creare un nuovo set di credenziali per la nostra applicazione. Questo dovrebbe presentarti una schermata che ti chiede di scegliere un’opzione appropriata. Nel nostro caso, seleziona l’opzione Applicazione Web e fai clic sul pulsante Crea. Ti verrà chiesto di fornire qualche dettaglio in più sulla tua candidatura.
Inserisci i dettagli mostrati nello screenshot qui sopra e salvalo! Naturalmente, è necessario impostare l’URI di reindirizzamento secondo le impostazioni dell’applicazione. È l’URL a cui l’utente verrà reindirizzato dopo il login.
A questo punto, abbiamo creato l’applicazione client Google OAuth2 e ora dovremmo essere in grado di utilizzare questa applicazione per integrare l’accesso di Google sul nostro sito. Si prega di annotare i valori Client ID e Client Secret che saranno richiesti durante la configurazione dell’applicazione da parte nostra. Puoi sempre trovare l’ID cliente e il segreto cliente quando modifichi la tua domanda.
Installa la libreria client dell’SDK Google PHP
In questa sezione vedremo come installare la libreria client API di Google PHP. Ci sono due opzioni tra cui scegliere per installarlo:
Usa Compositore.
Scarica e installa manualmente i file della libreria.
La via del compositore
Se preferisci installarlo utilizzando Composer, devi solo eseguire il seguente comando.
$composer require google/apiclient:"^2.0"
E questo è tutto!
Scarica la Liberatoria
Se non desideri utilizzare Composer, puoi anche scaricare l’ultima versione stabile dalla pagina API ufficiale.
Nel mio esempio, ho appena usato Composer.
Se stai seguendo, a questo punto dovresti aver configurato la tua applicazione Google e installato la libreria client dell’API PHP di Google. Nella sezione successiva e finale, vedremo come utilizzare questa libreria sul tuo sito PHP.
Integrazione della libreria client
Ricordiamo che durante la configurazione dell’applicazione Google, abbiamo dovuto fornire l’URI di reindirizzamento nella configurazione dell’applicazione e lo abbiamo impostato per reindirizzare su https://localhost/redirect.php. Ora è il momento di creare il file reindirizzamento.php.
Vai avanti e crea il reindirizzamento.php con i seguenti contenuti.
<?php require_once 'vendor/autoload.php'; // init configuration $clientID = '<YOUR_CLIENT_ID>'; $clientSecret = '<YOUR_CLIENT_SECRET>'; $redirectUri = '<REDIRECT_URI>'; // create Client Request to access Google API $client = new Google_Client(); $client->setClientId($clientID); $client->setClientSecret($clientSecret); $client->setRedirectUri($redirectUri); $client->addScope("email"); $client->addScope("profile"); // authenticate code from Google OAuth Flow if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); $client->setAccessToken($token['access_token']); // get profile info $google_oauth = new Google_Service_Oauth2($client); $google_account_info = $google_oauth->userinfo->get(); $email = $google_account_info->email; $name = $google_account_info->name; // now you can use this profile info to create account in your website and make user logged in. } else { echo "<a href='".$client->createAuthUrl()."'>Google Login</a>"; } ?>
Esaminiamo le parti chiave del codice.
La prima cosa che dobbiamo fare è includere il file autoload.php. Questo fa parte di Composer e garantisce che le classi che utilizziamo nel nostro script vengano caricate automaticamente.
require_once 'venditore/autoload.php';
Successivamente, c’è una sezione di configurazione, che inizializza la configurazione dell’applicazione impostando le impostazioni necessarie. Naturalmente, è necessario sostituire i segnaposto con i valori corrispondenti.
// configurazione iniziale $clientID = '<YOUR_CLIENT_ID>'; $clientSecret = '<YOUR_CLIENT_SECRET>'; $redirectUri = '<REDIRECT_URI>';
La sezione successiva crea un’istanza dell’oggetto Google_Client, che verrà utilizzato per eseguire varie azioni. Oltre a ciò, abbiamo anche inizializzato le impostazioni della nostra applicazione.
// crea la richiesta del cliente per accedere all'API di Google $client = new Google_Client(); $client->setClientId($clientID); $client->setClientSecret($clientSecret); $client->setRedirectUri($redirectUri);
Successivamente, abbiamo aggiunto gli ambiti e-mail e profilo, quindi dopo l’accesso abbiamo accesso alle informazioni di base del profilo.
$client->addScope("email"); $client->addScope("profile");
Infine, abbiamo un pezzo di codice che esegue la magia del flusso di accesso.
// authenticate code from Google OAuth Flow if (isset($_GET['code'])) { $token = $client->fetchAccessTokenWithAuthCode($_GET['code']); $client->setAccessToken($token['access_token']); // get profile info $google_oauth = new Google_Service_Oauth2($client); $google_account_info = $google_oauth->userinfo->get(); $email = $google_account_info->email; $name = $google_account_info->name; // now you can use this profile info to create account in your website and make user logged in. } else { echo "<a href='".$client->createAuthUrl()."'>Google Login</a>"; }
Innanzitutto, esaminiamo la parte else, che verrà attivata quando accedi direttamente allo script. Visualizza un collegamento che porta l’utente a Google per l’accesso. È importante notare che abbiamo utilizzato il metodo createAuthUrl di Google_Client per creare l’URL OAuth.
Dopo aver fatto clic sul collegamento di accesso di Google, gli utenti verranno indirizzati al sito di Google per l’accesso. Una volta effettuato l’accesso, Google reindirizza gli utenti al nostro sito passando la variabile della stringa di query del codice. Ed è allora che verrà attivato il codice PHP nel blocco if. Utilizzeremo il codice per scambiare il token di accesso.
Una volta ottenuto il token di accesso, possiamo utilizzare il servizio Google_Service_Oauth2 per recuperare le informazioni del profilo dell’utente che ha effettuato l’accesso.
Quindi, in questo modo, avrai accesso alle informazioni del profilo una volta che l’utente accede all’account Google. Puoi utilizzare queste informazioni per creare account sul tuo sito oppure memorizzarle in una sessione. Fondamentalmente, dipende da te come utilizzare queste informazioni e rispondere al fatto che l’utente ha effettuato l’accesso al tuo sito.
Utili script per moduli PHP
Oggi abbiamo discusso di come integrare l’accesso di Google con il tuo sito web PHP. Consente agli utenti di accedere con i propri account Google esistenti se non desiderano creare ancora un altro account per il tuo servizio.
Se stai cercando script PHP da poter utilizzare subito, ti consiglio di visitare i seguenti post, che riassumono alcuni ottimi script disponibili a basso costo.