Gli account vengono collegati utilizzando i flussi OAuth 2.0 impliciti e codice di autorizzazione standard di settore. Il servizio deve supportare gli endpoint di autorizzazione e scambio di token conformi a OAuth 2.0.
Nel flusso implicito, Google apre il tuo endpoint di autorizzazione nel browser dell'utente. Una volta eseguito l'accesso, restituisci un token di accesso di lunga durata a Google. Questo token di accesso è ora incluso in ogni richiesta inviata da Google.
Nel flusso del codice di autorizzazione sono necessari due endpoint:
L'endpoint di autorizzazione, che mostra l'interfaccia utente di accesso agli utenti che non hanno ancora eseguito l'accesso. L'endpoint di autorizzazione crea anche un codice di autorizzazione di breve durata per registrare il consenso degli utenti all'accesso richiesto.
L'endpoint di scambio di token, responsabile di due tipi di scambi:
- Scambia un codice di autorizzazione con un token di aggiornamento di lunga durata e un token di accesso di breve durata. Questo scambio avviene quando l'utente segue il flusso di collegamento dell'account.
- Scambia un token di aggiornamento a lungo termine con un token di accesso a breve termine. Questo scambio avviene quando Google ha bisogno di un nuovo token di accesso perché quello in suo possesso è scaduto.
Scegliere un flusso OAuth 2.0
Sebbene il flusso implicito sia più semplice da implementare, Google consiglia di non far scadere mai i token di accesso emessi dal flusso implicito. Questo accade perché l'utente è costretto a collegare di nuovo il proprio account dopo la scadenza di un token con il flusso implicito. Se hai bisogno della scadenza del token per motivi di sicurezza, ti consigliamo vivamente di utilizzare il flusso del codice di autorizzazione.
Istruzioni sul design
Questa sezione descrive i requisiti di progettazione e i consigli per la schermata utente ospitata per i flussi di collegamento OAuth. Dopo essere stata richiamata dall'app di Google, la tua piattaforma mostra all'utente una schermata di accesso alla pagina Google e all'account per il consenso per il collegamento. L'utente viene reindirizzato all'app di Google dopo aver dato il suo consenso al collegamento degli account.
Requisiti
- Devi comunicare che l'account dell'utente verrà collegato a Google, non a un prodotto Google specifico come Google Home o l'Assistente Google.
Consigli
Ti consigliamo di procedere come segue:
Mostra le Norme sulla privacy di Google. Includi un link alle Norme sulla privacy di Google nella schermata per il consenso.
Dati da condividere. Usa un linguaggio chiaro e conciso per spiegare all'utente quali dati di sua proprietà richiedono Google e perché.
Invito all'azione chiaro. Indica un invito all'azione chiaro nella schermata del consenso, ad esempio "Accetta e collega". Questo perché gli utenti devono capire quali dati devono condividere con Google per collegare i propri account.
Possibilità di annullare. Fornisci agli utenti un modo per tornare indietro o annullare, se scelgono di non eseguire il collegamento.
Cancella la procedura di accesso. Assicurati che gli utenti dispongano di un metodo chiaro per accedere al loro Account Google, ad esempio campi per nome utente e password o Accedi con Google.
Possibilità di scollegare. Offrire un meccanismo per consentire agli utenti di scollegare, ad esempio un URL alle impostazioni del loro account sulla tua piattaforma. In alternativa, puoi includere un link all'Account Google in cui gli utenti possono gestire il proprio account collegato.
Possibilità di modificare l'account utente. Suggerisci un metodo per consentire agli utenti di cambiare account. Questa opzione è particolarmente utile se gli utenti tendono ad avere più account.
- Se un utente deve chiudere la schermata del consenso per cambiare account, invia un errore recuperabile a Google in modo che l'utente possa accedere all'account preferito con il collegamento OAuth e il flusso implicito.
Includi il tuo logo. Mostra il logo della tua azienda nella schermata del consenso. Utilizza le linee guida di stile per posizionare il logo. Se vuoi mostrare anche il logo di Google, consulta Loghi e marchi.
Crea il progetto
Per creare il tuo progetto in modo da utilizzare il collegamento dell'account:
- Go to the Google API Console.
- Fai clic su Crea progetto .
- Inserisci un nome o accetta il suggerimento generato.
- Conferma o modifica tutti i campi rimanenti.
- Fai clic su Crea .
Per visualizzare l'ID del progetto:
- Go to the Google API Console.
- Trova il tuo progetto nella tabella nella pagina di destinazione. L'ID progetto viene visualizzato nella colonna ID .
Configura la schermata per il consenso OAuth
La procedura di collegamento dell'Account Google include una schermata per il consenso che indica agli utenti l'applicazione che richiede l'accesso ai loro dati, il tipo di dati richiesti e i termini applicabili. Devi configurare la schermata per il consenso OAuth prima di generare un ID client dell'API Google.
- Apri la pagina Schermata per il consenso OAuth della console API Google.
- Se richiesto, seleziona il progetto appena creato.
Nella pagina "Schermata consenso OAuth", compila il modulo e fai clic sul pulsante "Salva".
Nome dell'applicazione:il nome dell'applicazione che richiede il consenso. Il nome deve rispecchiare accuratamente la tua applicazione ed essere coerente con il nome dell'applicazione che gli utenti vedono altrove. Il nome dell'applicazione verrà visualizzato nella schermata del consenso per il collegamento dell'account.
Logo dell'applicazione: un'immagine nella schermata per il consenso che aiuterà gli utenti a riconoscere la tua app. Il logo viene visualizzato nella schermata per il consenso del collegamento dell'account e nelle impostazioni dell'account
Indirizzo email dell'assistenza:per consentire agli utenti di contattarti per domande sul loro consenso.
Ambiti per le API di Google:gli ambiti consentono alla tua applicazione di accedere ai dati privati di Google dell'utente. Per il caso d'uso Collegamento dell'Account Google, l'ambito predefinito (email, profilo, openid) è sufficiente, non è necessario aggiungere ambiti sensibili. In genere, è buona prassi richiedere gli ambiti in modo incrementale, al momento del bisogno, anziché in anticipo. Scopri di più.
Domini autorizzati:per proteggere te e i tuoi utenti, Google consente l'utilizzo dei domini autorizzati solo alle applicazioni che si autenticano tramite OAuth. I link delle tue applicazioni devono essere ospitati su domini autorizzati. Scopri di più.
Link alla home page dell'applicazione: home page della tua applicazione. Deve essere ospitato su un dominio autorizzato.
Link alle norme sulla privacy dell'applicazione:visualizzato nella schermata del consenso per il collegamento dell'Account Google. Deve essere ospitato su un dominio autorizzato.
(Facoltativo) Link ai Termini di servizio dell'applicazione: deve essere ospitato in un dominio autorizzato.
Figura 1. Schermata del consenso per il collegamento dell'Account Google per un'applicazione fittizia, Tunery
Controlla "Stato verifica". Se la tua richiesta deve essere verificata, fai clic sul pulsante "Invia per la verifica" per inviarla. Per maggiori dettagli, consulta i requisiti per la verifica OAuth.
Implementa il server OAuth
Per supportare il flusso OAuth 2.0 implicito, il servizio effettua un'autorizzazione endpoint disponibile tramite HTTPS. Questo endpoint è responsabile dell'autenticazione ottenere il consenso degli utenti per l'accesso ai dati. Endpoint di autorizzazione presenta una UI di accesso agli utenti che non hanno ancora effettuato l'accesso e registra acconsentire all'accesso richiesto.
Quando un'applicazione Google deve chiamare una delle API autorizzate del tuo servizio, Google utilizza questo endpoint per ottenere l'autorizzazione degli utenti a chiamare queste API per loro conto.
Una tipica sessione di flusso implicito OAuth 2.0 avviata da Google ha flusso seguente:
- Google apre il tuo endpoint di autorizzazione nel browser dell'utente. La l'utente esegue l'accesso, se non l'ha già fatto, e concede a Google l'autorizzazione per accedere ai propri dati con la tua API, se non hanno già concesso l'autorizzazione.
- Il servizio crea un token di accesso e lo restituisce a in tutti i canali Google. Per farlo, reindirizza il browser dell'utente a Google in modo da concedere l'accesso di accesso al token associato alla richiesta.
- Google chiama le API del tuo servizio e collega il token di accesso con per ogni richiesta. Il tuo servizio verifica che il token di accesso conceda a Google l'autorizzazione ad accedere all'API e quindi completa la chiamata API.
Gestire le richieste di autorizzazione
Quando un'applicazione Google deve eseguire il collegamento dell'account tramite un protocollo OAuth 2.0 flusso implicito, Google invia l'utente al tuo endpoint di autorizzazione con una che include i seguenti parametri:
Parametri endpoint di autorizzazione | |
---|---|
client_id |
L'ID client che hai assegnato a Google. |
redirect_uri |
L'URL a cui invii la risposta a questa richiesta. |
state |
Un valore di riferimento che viene restituito a Google invariato nelle URI di reindirizzamento. |
response_type |
Il tipo di valore da restituire nella risposta. Per il token OAuth 2.0 implicito,
il tipo di risposta è sempre token . |
user_locale |
L'impostazione della lingua dell'Account Google RFC5646 utilizzato per localizzare i contenuti nella lingua preferita dell'utente. |
Ad esempio, se l'endpoint di autorizzazione è disponibile su
https://myservice.example.com/auth
, una richiesta potrebbe avere il seguente aspetto:
GET https://myservice.example.com/auth?client_id=GOOGLE_CLIENT_ID&redirect_uri=REDIRECT_URI&state=STATE_STRING&response_type=token&user_locale=LOCALE
Per fare in modo che l'endpoint di autorizzazione gestisca le richieste di accesso, segui questi passaggi passaggi:
Verifica i valori
client_id
eredirect_uri
per evitare di concedere l'accesso ad app client indesiderate o configurate in modo errato:- Verifica che il
client_id
corrisponda all'ID cliente che hai indicato assegnati a Google. - Verifica che l'URL specificato dal
redirect_uri
ha il seguente formato:https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID https://oauth-redirect-sandbox.googleusercontent.com/r/YOUR_PROJECT_ID
- Verifica che il
Verifica se l'utente ha eseguito l'accesso al tuo servizio. Se l'utente non ha firmato completa la procedura di accesso o registrazione al servizio.
Genera un token di accesso che Google possa usare per accedere alla tua API. La il token di accesso può essere qualsiasi valore di stringa, ma deve rappresentare in modo univoco l'utente e il client a cui è destinato il token e non deve essere prevedibile.
Invia una risposta HTTP che reindirizza il browser dell'utente all'URL specificato dal parametro
redirect_uri
. Includi tutti i seguenti parametri nel frammento URL:access_token
: il token di accesso che hai appena generatotoken_type
: la stringabearer
state
: il valore dello stato non modificato dell'originale richiesta
Di seguito è riportato un esempio dell'URL risultante:
https://oauth-redirect.googleusercontent.com/r/YOUR_PROJECT_ID#access_token=ACCESS_TOKEN&token_type=bearer&state=STATE_STRING
Il gestore del reindirizzamento OAuth 2.0 di Google riceve il token di accesso e conferma
che il valore state
sia rimasto invariato. Dopo che Google ha ottenuto
di accesso al tuo servizio, Google lo collega alle chiamate successive
alle API dei tuoi servizi.
Gestire le richieste di informazioni utente
L'endpoint userinfo è una risorsa protetta da OAuth 2.0 che restituisce attestazioni sull'utente collegato. L'implementazione e l'hosting dell'endpoint userinfo sono facoltative, ad eccezione dei seguenti casi d'uso:
- Accesso a un account collegato con Google One Tap.
- Abbonamento senza problemi su AndroidTV.
Dopo che il token di accesso è stato recuperato correttamente dall'endpoint del token, Google invia una richiesta all'endpoint userinfo per recuperare le informazioni di base del profilo dell'utente collegato.
intestazioni delle richieste endpoint userinfo | |
---|---|
Authorization header |
Il token di accesso di tipo Bearer. |
Ad esempio, se l'endpoint userinfo è disponibile su
https://myservice.example.com/userinfo
, una richiesta potrebbe avere il seguente aspetto:
GET /userinfo HTTP/1.1 Host: myservice.example.com Authorization: Bearer ACCESS_TOKEN
Affinché l'endpoint userinfo possa gestire le richieste, segui questi passaggi:
- Estrai il token di accesso dall'intestazione Autorizzazione e restituisci le informazioni per l'utente associato al token di accesso.
- Se il token di accesso non è valido, restituisce un errore HTTP 401 Autorizzazione non autorizzata utilizzando l'intestazione della risposta
WWW-Authenticate
. Di seguito è riportato un esempio di risposta di errore userinfo:HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="The Access Token expired"
Se durante la procedura di collegamento viene restituito un errore 401 Autorizzazione o qualsiasi altra risposta di errore non riuscita durante la procedura di collegamento, l'errore non sarà recuperabile, il token recuperato verrà eliminato e l'utente dovrà avviare nuovamente la procedura di collegamento. Se il token di accesso è valido, restituisce e invia una risposta HTTP 200 con il seguente oggetto JSON nel corpo dell'HTTPS risposta:
{ "sub": "USER_UUID", "email": "EMAIL_ADDRESS", "given_name": "FIRST_NAME", "family_name": "LAST_NAME", "name": "FULL_NAME", "picture": "PROFILE_PICTURE", }
Se l'endpoint userinfo restituisce una risposta HTTP 200 riuscita, il token e le attestazioni recuperati vengono registrati in base all'Account Google dell'utente.risposta endpoint userinfo sub
Un ID univoco che identifica l'utente nel sistema. email
Indirizzo email dell'utente. given_name
Facoltativo:nome dell'utente. family_name
Facoltativo:il cognome dell'utente. name
Facoltativo:nome completo dell'utente. picture
(Facoltativo) Immagine del profilo dell'utente.
Convalidare l'implementazione
You can validate your implementation by using the OAuth 2.0 Playground tool.
In the tool, do the following steps:
- Click Configuration to open the OAuth 2.0 Configuration window.
- In the OAuth flow field, select Client-side.
- In the OAuth Endpoints field, select Custom.
- Specify your OAuth 2.0 endpoint and the client ID you assigned to Google in the corresponding fields.
- In the Step 1 section, don't select any Google scopes. Instead, leave this field blank or type a scope valid for your server (or an arbitrary string if you don't use OAuth scopes). When you're done, click Authorize APIs.
- In the Step 2 and Step 3 sections, go through the OAuth 2.0 flow and verify that each step works as intended.
You can validate your implementation by using the Google Account Linking Demo tool.
In the tool, do the following steps:
- Click the Sign-in with Google button.
- Choose the account you'd like to link.
- Enter the service ID.
- Optionally enter one or more scopes that you will request access for.
- Click Start Demo.
- When prompted, confirm that you may consent and deny the linking request.
- Confirm that you are redirected to your platform.