Questo riferimento descrive i metodi e gli attributi client JavaScript che utilizzerai per implementare Accedi con Google nelle tue applicazioni web.
In caso di problemi durante l'utilizzo della libreria, segnala il problema al nostro repository di GitHub.
Configurazione autenticazione
Carica la libreria della piattaforma API di Google per creare l'oggetto gapi
:
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
Dopo il caricamento della libreria della piattaforma, carica la libreria auth2
:
function init() {
gapi.load('auth2', function() {
/* Ready. Make a call to gapi.auth2.init or some other API */
});
}
gapi.auth2.init(params)
Inizializza l'oggetto GoogleAuth
. Devi chiamare questo metodo prima di chiamare i metodi di gapi.auth2.GoogleAuth
.
Quando inizializzi l'oggetto GoogleAuth
, devi configurare l'oggetto con il tuo ID client OAuth 2.0 e le eventuali opzioni aggiuntive che vuoi specificare. Quindi, se l'utente ha già eseguito l'accesso, l'oggetto GoogleAuth
ripristina lo stato di accesso dell'utente dalla sessione precedente.
Argomenti | |
---|---|
params |
Un oggetto contenente coppie chiave-valore dei dati di configurazione del client. Consulta
gapi.auth2.ClientConfig per conoscere le diverse
proprietà configurabili. Ad esempio:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com' } |
Resi | |
---|---|
gapi.auth2.GoogleAuth |
L'oggetto gapi.auth2.GoogleAuth . Utilizza il metodo
then() per ottenere una promessa
che viene risolta quando l'oggetto gapi.auth2.GoogleAuth completa
l'inizializzazione.
|
GoogleAuth.then(onInit, onError)
Chiama la funzione onInit quando l'oggetto GoogleAuth
è completamente inizializzato. Se durante l'inizializzazione si verifica un errore (si può verificare nei vecchi browser non supportati), verrà chiamata la funzione onError.
Argomenti | |
---|---|
onInit |
La funzione chiamata con l'oggetto GoogleAuth quando è completamente
inizializzata.
|
onError |
Funzione chiamata con un oggetto contenente una proprietà error se GoogleAuth non è stato inizializzato.
|
Resi | |
---|---|
Promessa | Un Promise completato quando la funzione onInit è stata completata o rifiutato se è stato generato un errore di inizializzazione. Viene risolto con il valore restituito dalla funzione onInit, se presente. |
Codici di errore
idpiframe_initialization_failed
-
Impossibile inizializzare un iframe richiesto da Google, ad esempio, a causa di un ambiente
non supportato. Una proprietà
details
fornirà ulteriori informazioni sull'errore generato.
gapi.auth2.ClientConfig
Interfaccia che rappresenta i diversi parametri di configurazione per il metodo gapi.auth2.init
.
Parametri | ||
---|---|---|
client_id |
string |
Obbligatorio. L'ID client dell'app, trovato e creato in Google Developers Console. |
cookie_policy |
string |
I domini per i quali creare cookie di accesso. URI, single_host_origin o none . Se non specificato, il valore predefinito è
single_host_origin . |
scope |
string |
Gli ambiti da richiedere, come stringa delimitata da spazi. Facoltativo se
fetch_basic_profile non è impostato su false. |
fetch_basic_profile |
boolean |
Recuperare le informazioni di base del profilo degli utenti quando accedono. Aggiunge "profilo", "email" e "openid" agli ambiti richiesti. Vero se non specificato. |
hosted_domain |
string |
Il dominio G Suite a cui gli utenti devono appartenere per accedere. Questo
è suscettibile di modifiche da parte dei client, quindi assicurati di verificare la
proprietà del dominio ospitato dell'utente restituito. Utilizza
GoogleUser.getHostedDomain() sul
client e la richiesta hd nel token ID del
server per verificare che il dominio funzioni come previsto.
|
ux_mode |
string |
La modalità UX da utilizzare per il flusso di accesso. Per impostazione predefinita, aprirà il flusso di consenso in un popup. I valori validi sono popup e redirect . |
redirect_uri |
string |
Se utilizzi ux_mode='redirect' , questo parametro ti consente di ignorare
il valore predefinito di redirect_uri che verrà utilizzato alla fine del flusso di consenso. Il valore predefinito, redirect_uri , è l'URL corrente rimosso dai parametri di ricerca e dal frammento hash.
|
plugin_name |
string |
(Facoltativo) Se questo valore è impostato, i nuovi ID client creati prima del 29 luglio 2022 potranno utilizzare la libreria Google Platform precedente.
Per impostazione predefinita, ora per gli ID client appena creati non è consentita l'utilizzo della libreria di Platform, ma è necessario utilizzare la libreria di servizi Google Identity più recente. Puoi scegliere qualsiasi valore; un nome descrittivo come il nome del prodotto o del plug-in è consigliato per una facile identificazione.
Esempio: plugin_name: 'YOUR_STRING_HERE'
|
Autenticazione
GoogleAuth
è una singola classe che fornisce metodi che consentono all'utente di accedere con un Account Google, ottenere lo stato di accesso attuale dell'utente, ricevere dati specifici dal suo profilo Google, richiedere ambiti aggiuntivi e uscire dalla account attuale.
gapi.auth2.getAuthInstance()
Restituisce l'oggetto GoogleAuth
. Devi inizializzare l'oggetto GoogleAuth
con gapi.auth2.init()
prima di chiamare questo metodo.
Resi | |
---|---|
gapi.auth2.GoogleAuth |
L'oggetto gapi.auth2.GoogleAuth . Utilizza questo oggetto per chiamare
i metodi di gapi.auth2.GoogleAuth .
|
GoogleAuth.isSignedIn.get()
Indica se l'utente corrente è attualmente connesso.
Resi | |
---|---|
Booleano |
true se l'utente ha eseguito l'accesso o false se
l'utente non ha eseguito l'accesso o l'oggetto GoogleAuth non è
inizializzato.
|
GoogleAuth.isSignedIn.listen(listener)
Consente di rilevare le modifiche relative allo stato di accesso dell'utente corrente.
Argomenti | |
---|---|
listener |
Una funzione che accetta un valore booleano. listen() passa
true a questa funzione quando l'utente esegue l'accesso e
false quando l'utente si disconnette.
|
GoogleAuth.signIn()
Esegue l'accesso dell'utente con le opzioni specificate in gapi.auth2.init()
.
Resi | |
---|---|
Promessa | Promise che viene soddisfatto con l'istanza GoogleUser quando l'utente autentica e concede correttamente gli ambiti richiesti oppure viene rifiutato con un oggetto contenente una proprietà error se si è verificato un errore (vedi di seguito per i codici di errore). |
Codici di errore
Leggi i GoogleAuth.signIn(options)
.
GoogleAuth.signIn(options)
Esegue l'accesso dell'utente utilizzando le opzioni specificate.
Argomenti | |
---|---|
options |
Procedi in uno dei seguenti modi:
|
Resi | |
---|---|
Promessa | Promise che viene soddisfatto con l'istanza GoogleUser quando l'utente autentica e concede correttamente gli ambiti richiesti oppure viene rifiutato con un oggetto contenente una proprietà error se si è verificato un errore (vedi di seguito per i codici di errore). |
Codici di errore
popup_closed_by_user
- L'utente ha chiuso il popup prima di completare il flusso di accesso.
access_denied
- L'utente ha negato l'autorizzazione agli ambiti richiesti.
immediate_failed
-
Nessun utente può essere selezionato automaticamente senza richiedere il flusso di consenso. Errore generato quando
si utilizza
signIn
con l'opzioneprompt: 'none'
. Questa opzione non deve essere obbligatoria per l'utilizzo, poichégapi.auth2.init
accederà automaticamente all'utente se ha eseguito l'accesso in precedenza durante una sessione precedente.
gapi.auth2.SignInOptions
Interfaccia che rappresenta i diversi parametri di configurazione per il metodo GoogleAuth.signIn(options)
.
Parametri | ||
---|---|---|
prompt |
string |
Forza una modalità specifica per il flusso di consenso. (Facoltativo) I valori possibili sono:
|
scope |
string |
Gli ambiti da richiedere, come stringa delimitata da spazi, sopra gli ambiti definiti nei parametri gapi.auth2.init . Facoltativo se fetch_basic_profile non è impostato su false.
|
ux_mode |
string |
La modalità UX da utilizzare per il flusso di accesso. Per impostazione predefinita, aprirà il flusso di consenso in un popup. I valori validi sono popup e redirect . |
redirect_uri |
string |
Se utilizzi ux_mode='redirect' , questo parametro ti consente di sostituire
l'elemento redirect_uri predefinito che verrà utilizzato alla fine del flusso
del consenso. Il valore predefinito, redirect_uri , è l'URL corrente rimosso dai parametri di ricerca e dal frammento hash.
|
GoogleAuth.signOut()
Disconnetti l'account corrente dall'applicazione.
Resi | |
---|---|
Promessa | Un Promise che viene soddisfatto quando l'utente è stato disconnesso. |
GoogleAuth.disconnect()
Revoca tutti gli ambiti concessi dall'utente.
GoogleAuth.grantOfflineAccess(options)
Ottieni all'utente l'autorizzazione per accedere agli ambiti specificati offline.
Argomenti | |
---|---|
options |
Un oggetto gapi.auth2.OfflineAccessOptions contenente coppie chiave-valore dei parametri. Ad esempio: { scope: 'profile email' } |
Resi | |
---|---|
Promessa | Valore di Promise che viene soddisfatto quando l'utente concede gli ambiti
richiesti, trasmettendo un oggetto contenente il codice di autorizzazione al
gestore di fulfillment di Promise .
Ad esempio: auth2.grantOfflineAccess().then(function(resp) { var auth_code = resp.code; }); |
Codici di errore
popup_closed_by_user
- L'utente ha chiuso il popup prima di completare il flusso di consenso.
access_denied
- L'utente ha negato l'autorizzazione agli ambiti richiesti.
immediate_failed
-
Nessun utente può essere selezionato automaticamente senza richiedere il flusso di consenso. Errore generato quando
si utilizza
signIn
con l'opzioneprompt: 'none'
. Questa opzione non deve essere obbligatoria per l'utilizzo, poichégapi.auth2.init
accederà automaticamente all'utente se ha eseguito l'accesso in precedenza durante una sessione precedente.
gapi.auth2.OfflineAccessOptions
Interfaccia che rappresenta i diversi parametri di configurazione per il metodo GoogleAuth.grantOfflineAccess(options)
.
Parametri | ||
---|---|---|
prompt |
string |
Forza una modalità specifica per il flusso di consenso. (Facoltativo) I valori possibili sono:
|
scope |
string |
Gli ambiti da richiedere, come stringa delimitata da spazi, sopra gli ambiti definiti nei parametri gapi.auth2.init . Facoltativo se fetch_basic_profile non è impostato su false.
|
GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure)
Collega il flusso di accesso al gestore dei clic del contenitore specificato.
Argomenti | |
---|---|
container | L'ID o un riferimento all'elemento div a cui collegare il gestore dei clic. |
options | Un oggetto contenente coppie chiave-valore dei parametri. Consulta la pagina GoogleAuth.signIn(). |
onsuccess | La funzione da chiamare al termine dell'accesso. |
onfailure | La funzione da chiamare se l'accesso non riesce. |
Utenti
Un oggetto GoogleUser
rappresenta un account utente.
Gli oggetti GoogleUser
vengono in genere ottenuti chiamando
GoogleAuth.currentUser.get().
GoogleAuth.currentUser.get()
Restituisce un oggetto GoogleUser
che rappresenta l'utente corrente. Tieni presente che, in un'istanza GoogleAuth
di recente inizializzazione, l'utente corrente non è stato impostato. Utilizza il metodo
currentUser.listen()
o GoogleAuth.then()
per ottenere un'istanza GoogleAuth
inizializzata.
Resi | |
---|---|
GoogleUser |
L'utente corrente |
GoogleAuth.currentUser.listen(listener)
Ascolta le modifiche dell'utente Current.
Argomenti | |
---|---|
listener |
Una funzione che accetta un parametro GoogleUser .
listen trasmette questa funzione a un'istanza GoogleUser in corrispondenza di ogni modifica che modifica currentUser .
|
UtenteGoogle.getId()
Recupera la stringa ID univoca per l'utente.
Resi | |
---|---|
Stringa | L'ID univoco dell'utente. |
GoogleUser.isSignedIn()
Restituisce true se l'utente ha eseguito l'accesso.
Resi | |
---|---|
Booleano | Vero se l'utente ha eseguito l'accesso |
GoogleUser.getHostedDomain()
Ottenere il dominio G Suite dell'utente se quest'ultimo ha eseguito l'accesso con un account G Suite.
Resi | |
---|---|
Stringa | Il dominio G Suite dell'utente |
GoogleUser.getGrantedScopes()
Recupera gli ambiti che l'utente ha concesso come stringa delimitata da spazi.
Resi | |
---|---|
Stringa | Gli ambiti concessi dall'utente |
GoogleUser.getBasicProfile()
Visualizzare le informazioni di base del profilo dell'utente.
Resi | |
---|---|
gapi.auth2.BasicProfile |
Puoi recuperare le proprietà di gapi.auth2.BasicProfile con i seguenti metodi:
|
GoogleUser.getAuthResponse(includePermissionData)
Recupera l'oggetto risposta dalla sessione di autenticazione dell'utente.
Argomenti | |
---|---|
includeAuthorizationData | Facoltativo: un valore booleano che specifica se restituire sempre un token e gli ambiti di accesso. Per impostazione predefinita, il token di accesso e gli ambiti richiesti non vengono restituiti quando fetch_basic_profile è true (valore predefinito) e non vengono richiesti ambiti aggiuntivi. |
Resi | |
---|---|
gapi.auth2.AuthResponse |
Un oggetto gapi.auth2.AuthResponse . |
GoogleUser.reloadAuthResponse()
Forza un aggiornamento del token di accesso, quindi restituisce una promessa per la nuova AuthResponse.
Resi | |
---|---|
Promise |
Un Promise completato con il gapi.auth2.AuthResponse ricaricato quando viene ricaricato il token OAuth.
|
gapi.auth2.AuthResponse
La risposta è stata restituita durante la chiamata ai metodi
GoogleUser.getAuthResponse(includeAuthorizationData)
o
GoogleUser.reloadAuthResponse()
.
Proprietà | ||
---|---|---|
access_token |
string |
Il token di accesso concesso. |
id_token |
string |
Il token ID concesso. |
scope |
string |
Gli ambiti concessi nel token di accesso. |
expires_in |
number |
Il numero di secondi prima della scadenza del token di accesso. |
first_issued_at |
number |
Il timestamp in cui l'utente ha concesso per la prima volta gli ambiti richiesti. |
expires_at |
number |
Il timestamp di scadenza del token di accesso. |
GoogleUser.hasGrantedScopes(scopes)
Restituisce true se l'utente ha concesso gli ambiti specificati.
Argomenti | |
---|---|
scopes | Una stringa di ambiti delimitata da spazi. |
Resi | |
---|---|
Booleano | Vero se gli ambiti sono stati concessi |
GoogleUser.grant(options)
Richiedi ambiti aggiuntivi all'utente.
Consulta GoogleAuth.signIn()
per l'elenco dei parametri e il codice di errore.
GoogleUser.grantOfflineAccess(options)
Ottieni all'utente l'autorizzazione per accedere agli ambiti specificati offline.
Argomenti | |
---|---|
options |
Un oggetto gapi.auth2.OfflineAccessOptions contenente coppie chiave-valore dei parametri. Ad esempio: { scope: 'profile email' } |
GoogleUser.disconnect()
Revoca tutti gli ambiti concessi dall'utente per l'applicazione.
Elementi dell'interfaccia utente
gapi.signin2.render(id, options)
Consente di visualizzare un pulsante di accesso nell'elemento con l'ID specificato, utilizzando le impostazioni specificate dall'oggetto options.
Argomenti | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | L'ID dell'elemento in cui visualizzare il pulsante di accesso. | ||||||||||||||||
options |
Un oggetto contenente le impostazioni da utilizzare per il rendering del pulsante. Ad esempio:
{ scope: 'email', width: 200, height: 50, longtitle: true, theme: 'dark', onsuccess: handleSuccess, onfailure: handleFailure }Puoi specificare le opzioni seguenti:
|
Avanzate
gapi.auth2.authorized(params, callback)
Esegue un'autorizzazione OAuth 2.0 una tantum. A seconda dei parametri utilizzati, si aprirà un popup con il flusso di accesso a Google o verrà provata a caricare la risposta richiesta senza audio, senza interazioni da parte dell'utente.
Alcuni casi d'uso in cui questo metodo è utile includono:
- L'applicazione deve richiedere un endpoint API Google solo una volta, ad esempio per caricare i video preferiti dell'utente al primo accesso.
- L'applicazione ha una propria infrastruttura di gestione delle sessioni e richiede il token ID solo una volta per identificare l'utente nel backend.
- Nella stessa pagina vengono utilizzati diversi ID client.
Argomenti | |
---|---|
params |
Un oggetto contenente coppie chiave-valore dei dati di configurazione. Consulta
gapi.auth2.AuthorizeConfig per informazioni sulle
diverse proprietà configurabili. Ad esempio:
{ client_id: 'CLIENT_ID.apps.googleusercontent.com', scope: 'email profile openid', response_type: 'id_token permission' } |
callback |
Una funzione chiamata con un oggetto gapi.auth2.AuthorizeResponse dopo che la richiesta è stata completata (con esito positivo o con un errore).
|
Esempio
gapi.auth2.authorize({
client_id: 'CLIENT_ID.apps.googleusercontent.com',
scope: 'email profile openid',
response_type: 'id_token permission'
}, function(response) {
if (response.error) {
// An error happened!
return;
}
// The user authorized the application for the scopes requested.
var accessToken = response.access_token;
var idToken = response.id_token;
// You can also now use gapi.client to perform authenticated requests.
});
Codici di errore
idpiframe_initialization_failed
-
Impossibile inizializzare un iframe richiesto da Google, ad esempio, a causa di un ambiente
non supportato. Una proprietà
details
fornirà ulteriori informazioni sull'errore generato. popup_closed_by_user
- L'utente ha chiuso il popup prima di completare il flusso di accesso.
access_denied
- L'utente ha negato l'autorizzazione agli ambiti richiesti.
immediate_failed
-
Nessun utente può essere selezionato automaticamente senza richiedere il flusso di consenso. Errore generato quando
si utilizza
signIn
con l'opzioneprompt: 'none'
.
gapi.auth2.AuthorizeConfig
Interfaccia che rappresenta i diversi parametri di configurazione per il metodo gapi.auth2.authorize
.
Proprietà | ||
---|---|---|
client_id |
string |
Required. L'ID client dell'app, trovato e creato in Google Developers Console. |
scope |
string |
Required. Gli ambiti da richiedere, come stringa delimitata da spazi. |
response_type |
string |
Un elenco di tipi di risposta delimitati da spazi. Il valore predefinito è 'permission' . I valori possibili sono:
|
prompt |
string |
Forza una modalità specifica per il flusso di consenso. I valori possibili sono:
|
cookie_policy |
string |
I domini per i quali creare cookie di accesso. URI, single_host_origin o none . Se non specificato, il valore predefinito è
single_host_origin .
|
hosted_domain |
string |
Il dominio G Suite a cui gli utenti devono appartenere per accedere. Questo è suscettibile di modifiche da parte dei client, quindi assicurati di verificare la proprietà del dominio ospitato dell'utente restituito. |
login_hint |
string |
L'email o lo User-ID di un utente da preselezionare nel flusso di accesso. Questo è suscettibile di
modifiche da parte dell'utente, a meno che non venga utilizzato prompt: "none" .
|
include_granted_scopes |
boolean |
Indica se richiedere un token di accesso che includa tutti gli ambiti precedentemente concessi dall'utente
all'app oppure solo gli ambiti richiesti nella chiamata corrente. Il valore predefinito è true .
|
plugin_name |
string |
(Facoltativo) Se impostato, gli ID client creati prima del 29 luglio 2022 possono utilizzare la libreria di Google Platform. Per impostazione predefinita, gli ID client appena creati non possono utilizzare la Libreria piattaforme e devono utilizzare la libreria di servizi di identità Google più recente. Puoi scegliere qualsiasi valore; un nome descrittivo come il nome del prodotto o del plug-in è consigliato per una facile identificazione.
Esempio: plugin_name: 'YOUR_STRING_HERE'
|
gapi.auth2.AuthorizeResponse
La risposta è stata restituita al callback del
metodo gapi.auth2.authorize
.
Proprietà | ||
---|---|---|
access_token |
string |
Il token di accesso concesso. Presente solo se permission o token sono stati
specificati in response_type .
|
id_token |
string |
Il token ID concesso. Presente solo se id_token è stato specificato in
response_type .
|
code |
string |
Il codice di autorizzazione concesso. Presente solo se code è stato specificato in
response_type .
|
scope |
string |
Gli ambiti concessi nel token di accesso. Presente solo se permission o
token sono stati specificati nella response_type .
|
expires_in |
number |
Il numero di secondi prima della scadenza del token di accesso. Presente solo se permission
o token sono stati specificati nella response_type .
|
first_issued_at |
number |
Il timestamp in cui l'utente ha concesso per la prima volta gli ambiti richiesti. Presente solo se permission o token sono stati specificati nella response_type .
|
expires_at |
number |
Il timestamp di scadenza del token di accesso. Presente solo se permission
o token sono stati specificati nella response_type .
|
error |
string |
Quando la richiesta non è andata a buon fine, contiene il codice di errore. |
error_subtype |
string |
Quando la richiesta non è andata a buon fine, può contenere informazioni aggiuntive sul codice di errore. |