Ce document de référence décrit les méthodes et les attributs de client JavaScript que vous utiliserez pour implémenter Google Sign-In dans vos applications Web.
Si vous rencontrez un problème avec la bibliothèque, veuillez le signaler dans notre dépôt GitHub.
Configuration de l'authentification
Chargez la bibliothèque de la plate-forme d'API Google pour créer l'objet gapi
:
<script src="https://apis.google.com/js/platform.js?onload=init" async defer></script>
Une fois la bibliothèque de la plate-forme chargée, chargez la bibliothèque auth2
:
function init() {
gapi.load('auth2', function() {
/* Ready. Make a call to gapi.auth2.init or some other API */
});
}
gapi.auth2.init(params)
Initialise l'objet GoogleAuth
. Vous devez appeler cette méthode avant d'appeler les méthodes de gapi.auth2.GoogleAuth
.
Lorsque vous initialisez l'objet GoogleAuth
, vous le configurez avec votre ID client OAuth 2.0 et toute autre option que vous souhaitez spécifier. Ensuite, si l'utilisateur s'est déjà connecté, l'objet GoogleAuth
restaure son état de connexion à partir de la session précédente.
Arguments | |
---|---|
params |
Objet contenant des paires clé/valeur des données de configuration du client. Consultez la section gapi.auth2.ClientConfig pour connaître les différentes propriétés configurables. Exemple :
{ client_id: 'CLIENT_ID.apps.googleusercontent.com' } |
Renvoie | |
---|---|
gapi.auth2.GoogleAuth |
Objet gapi.auth2.GoogleAuth . Utilisez la méthode then() pour obtenir une promesse résolue à la fin de l'initialisation de l'objet gapi.auth2.GoogleAuth .
|
GoogleAuth.then(onInit, onError)
Il appelle la fonction onInit lorsque l'objet GoogleAuth
est entièrement initialisé. Si une erreur est générée lors de l'initialisation (ce qui peut se produire dans les anciens navigateurs non compatibles), la fonction onError sera appelée à la place.
Arguments | |
---|---|
onInit |
Fonction appelée avec l'objet GoogleAuth lorsqu'il est entièrement initialisé.
|
onError |
Fonction appelée avec un objet contenant une propriété error , si l'initialisation de GoogleAuth a échoué.
|
Renvoie | |
---|---|
Promesse | Un Promise qui est rempli lorsque la fonction onInit est terminée, ou refusé si une erreur d'initialisation a été générée. Elle est résolue avec la valeur renvoyée par la fonction onInit, le cas échéant. |
Codes d'erreur
idpiframe_initialization_failed
- Échec de l'initialisation d'un iFrame obligatoire de Google (par exemple, en raison d'un environnement non compatible). Une propriété
details
fournit plus d'informations sur l'erreur générée.
gapi.auth2.ClientConfig
Interface qui représente les différents paramètres de configuration de la méthode gapi.auth2.init
.
Paramètres | ||
---|---|---|
client_id |
string |
Obligatoire. ID client de l'application, trouvé et créé dans Google Developers Console. |
cookie_policy |
string |
Domaines pour lesquels vous souhaitez créer des cookies de connexion. URI, single_host_origin ou none . Si aucune valeur n'est spécifiée, la valeur par défaut est single_host_origin . |
scope |
string |
Champs d'application à demander, sous forme de chaîne délimitée par des espaces. Facultatif si fetch_basic_profile n'est pas défini sur "false". |
fetch_basic_profile |
boolean |
Récupérez les informations de profil de base des utilisateurs lorsqu'ils se connectent. Ajout de 'profile', 'email' et 'openid' aux champs d'application demandés Vraie si non spécifiée. |
hosted_domain |
string |
Domaine G Suite auquel les utilisateurs doivent appartenir pour se connecter. Les clients étant susceptibles de les modifier, veillez à valider la propriété de domaine hébergée de l'utilisateur renvoyé. Utilisez GoogleUser.getHostedDomain() sur le client, et la revendication hd dans le jeton d'ID sur le serveur permet de vérifier que le domaine correspond à vos attentes.
|
ux_mode |
string |
Mode d'expérience utilisateur à utiliser pour le parcours de connexion. Par défaut, le flux de consentement s'ouvre dans une fenêtre pop-up. Les valeurs valides sont popup et redirect . |
redirect_uri |
string |
Si vous utilisez ux_mode='redirect' , ce paramètre vous permet de remplacer la valeur redirect_uri par défaut qui sera utilisée à la fin du flux de consentement. La valeur par défaut redirect_uri correspond à l'URL actuelle dépouillé des paramètres de requête et du fragment de hachage.
|
plugin_name |
string |
Facultatif. Si cette valeur est définie, les ID client créés avant le 29 juillet 2022 peuvent utiliser l'ancienne bibliothèque Google Platform.
Par défaut, les ID client nouvellement créés ne peuvent plus utiliser la bibliothèque de la plate-forme et doivent désormais utiliser la nouvelle bibliothèque Google Identity Services. Vous pouvez choisir n'importe quelle valeur. Un nom descriptif tel qu'un nom de produit ou de plug-in est recommandé pour faciliter l'identification.
Exemple : plugin_name: 'YOUR_STRING_HERE'
|
Authentification
GoogleAuth
est une classe singleton qui fournit des méthodes permettant à l'utilisateur de se connecter avec un compte Google, d'obtenir l'état de connexion actuel de l'utilisateur, d'obtenir des données spécifiques de son profil Google, de demander des champs d'application supplémentaires et de se déconnecter du compte actuel.
gapi.auth2.getAuthInstance()
Renvoie l'objet GoogleAuth
. Vous devez initialiser l'objet GoogleAuth
avec gapi.auth2.init()
avant d'appeler cette méthode.
Renvoie | |
---|---|
gapi.auth2.GoogleAuth |
Objet gapi.auth2.GoogleAuth . Utilisez cet objet pour appeler les méthodes de gapi.auth2.GoogleAuth .
|
GoogleAuth.isSignedIn.get()
Indique si l'utilisateur actuel est actuellement connecté.
Renvoie | |
---|---|
Booléen |
true si l'utilisateur est connecté, ou false s'il est déconnecté ou si l'objet GoogleAuth n'est pas initialisé.
|
GoogleAuth.isSignedIn.listen(écouteur)
Écoutez les modifications de l'état de connexion de l'utilisateur actuel.
Arguments | |
---|---|
listener |
Fonction qui utilise une valeur booléenne. listen() transmet true à cette fonction lorsque l'utilisateur se connecte, et false lorsqu'il se déconnecte.
|
GoogleAuth.signIn().
Il connecte l'utilisateur avec les options spécifiées à gapi.auth2.init()
.
Renvoie | |
---|---|
Promesse | Un message Promise qui est traité avec l'instance GoogleUser lorsque l'utilisateur s'authentifie et accorde les champs d'application demandés, ou refusé avec un objet contenant une propriété error si une erreur s'est produite (voir les codes d'erreur ci-dessous). |
Codes d'erreur
Consultez les GoogleAuth.signIn(options)
.
GoogleAuth.signIn(options)
L'utilisateur se connecte à l'aide des options spécifiées.
Arguments | |
---|---|
options |
Soit :
|
Renvoie | |
---|---|
Promesse | Un message Promise qui est traité avec l'instance GoogleUser lorsque l'utilisateur s'authentifie et accorde les champs d'application demandés, ou refusé avec un objet contenant une propriété error si une erreur s'est produite (voir les codes d'erreur ci-dessous). |
Codes d'erreur
popup_closed_by_user
- L'utilisateur a fermé le pop-up avant de terminer la procédure de connexion.
access_denied
- L'utilisateur a refusé l'autorisation d'accès aux champs d'application requis.
immediate_failed
-
Aucun utilisateur ne peut être sélectionné automatiquement sans que le parcours d'autorisation ne s'affiche. Erreur générée lors de l'utilisation de
signIn
avec l'optionprompt: 'none'
. Cette option ne devrait pas être nécessaire, cargapi.auth2.init
connectera automatiquement l'utilisateur s'il s'était précédemment connecté lors d'une session précédente.
gapi.auth2.SignInOptions
Interface qui représente les différents paramètres de configuration de la méthode GoogleAuth.signIn(options)
.
Paramètres | ||
---|---|---|
prompt |
string |
Force un mode spécifique pour le flux de consentement. Facultatif. Les valeurs possibles sont les suivantes :
|
scope |
string |
Champs d'application à demander, sous la forme d'une chaîne délimitée par des espaces, en plus des champs d'application définis dans les paramètres gapi.auth2.init . Facultatif si fetch_basic_profile n'est pas défini sur "false".
|
ux_mode |
string |
Mode d'expérience utilisateur à utiliser pour le parcours de connexion. Par défaut, le flux de consentement s'ouvre dans une fenêtre pop-up. Les valeurs valides sont popup et redirect . |
redirect_uri |
string |
Si vous utilisez ux_mode='redirect' , ce paramètre vous permet de remplacer la valeur par défaut de redirect_uri qui sera utilisée à la fin du flux de consentement. Par défaut, redirect_uri est l'URL actuelle supprimée des paramètres de requête et du fragment de hachage.
|
GoogleAuth.signOut()
Déconnexion du compte actuel de l'application
Renvoie | |
---|---|
Promesse | Un Promise qui est traité lorsque l'utilisateur a été déconnecté. |
GoogleAuth.disconnect()
Révoque tous les champs d'application accordés par l'utilisateur.
GoogleAuth.grantOfflineAccess(options)
Obtenez l'autorisation de l'utilisateur pour accéder hors connexion aux champs d'application spécifiés.
Arguments | |
---|---|
options |
Un objet gapi.auth2.OfflineAccessOptions contenant des paires clé/valeur Par exemple : { scope: 'profile email' } |
Renvoie | |
---|---|
Promesse | Promise traité lorsque l'utilisateur accorde les champs d'application demandés, en transmettant un objet contenant le code d'autorisation au gestionnaire de traitement de Promise .
Exemple: auth2.grantOfflineAccess().then(function(resp) { var auth_code = resp.code; }); |
Codes d'erreur
popup_closed_by_user
- L'utilisateur a fermé le pop-up avant de terminer la procédure d'autorisation.
access_denied
- L'utilisateur a refusé l'autorisation d'accès aux champs d'application requis.
immediate_failed
-
Aucun utilisateur ne peut être sélectionné automatiquement sans que le parcours d'autorisation ne s'affiche. Erreur générée lors de l'utilisation de
signIn
avec l'optionprompt: 'none'
. Cette option ne devrait pas être nécessaire, cargapi.auth2.init
connectera automatiquement l'utilisateur s'il s'était précédemment connecté lors d'une session précédente.
gapi.auth2.OfflineAccessOptions
Interface qui représente les différents paramètres de configuration de la méthode GoogleAuth.grantOfflineAccess(options)
.
Paramètres | ||
---|---|---|
prompt |
string |
Force un mode spécifique pour le flux de consentement. Facultatif. Les valeurs possibles sont les suivantes :
|
scope |
string |
Champs d'application à demander, sous la forme d'une chaîne délimitée par des espaces, en plus des champs d'application définis dans les paramètres gapi.auth2.init . Facultatif si fetch_basic_profile n'est pas défini sur "false".
|
GoogleAuth.attachClickHandler(container, options, onsuccess, onfailure)
Attache le flux de connexion au gestionnaire de clics du conteneur spécifié.
Arguments | |
---|---|
container | ID de l'élément div auquel est associé le gestionnaire de clics, ou référence à cet élément. |
options | Objet contenant des paires clé-valeur. Consultez GoogleAuth.signIn(). |
onsuccess | Fonction à appeler une fois la connexion terminée. |
onfailure | Fonction à appeler en cas d'échec de la connexion. |
Utilisateurs
Un objet GoogleUser
représente un compte utilisateur.
Les objets GoogleUser
sont généralement obtenus en appelant GoogleAuth.currentUser.get().
GoogleAuth.currentUser.get()
Renvoie un objet GoogleUser
qui représente l'utilisateur actuel. Notez que dans une instance GoogleAuth
nouvellement initialisée, l'utilisateur actuel n'a pas été défini. Utilisez la méthode currentUser.listen()
ou GoogleAuth.then()
pour obtenir une instance GoogleAuth
initialisée.
Renvoie | |
---|---|
GoogleUser |
Utilisateur actuel |
GoogleAuth.currentUser.listen(listener)
Écoutez les modifications apportées à currentUser.
Arguments | |
---|---|
listener |
Une fonction qui utilise un paramètre GoogleUser .
listen transmet à cette fonction une instance GoogleUser à chaque modification qui modifie currentUser .
|
GoogleUser.getId()
Obtenez la chaîne d'ID unique de l'utilisateur.
Renvoie | |
---|---|
Chaîne | ID unique de l'utilisateur |
GoogleUser.isSignedIn()
Renvoie la valeur "true" si l'utilisateur est connecté.
Renvoie | |
---|---|
Booléen | True si l'utilisateur est connecté |
GoogleUser.getHostedDomain()
Obtenez le domaine G Suite de l'utilisateur s'il s'est connecté avec un compte G Suite.
Renvoie | |
---|---|
Chaîne | Le domaine G Suite de l'utilisateur |
GoogleUser.getGrantedScopes()
Récupérez les champs d'application accordés par l'utilisateur sous forme de chaîne délimitée par des espaces.
Renvoie | |
---|---|
Chaîne | Champs d'application autorisés par l'utilisateur |
GoogleUser.getBasicProfile()
Obtenir les informations de base du profil de l'utilisateur
Renvoie | |
---|---|
gapi.auth2.BasicProfile |
Vous pouvez récupérer les propriétés de gapi.auth2.BasicProfile à l'aide des méthodes suivantes :
|
GoogleUser.getAuthResponse(includeAuthorizationData)
Récupérez l'objet de réponse à partir de la session d'authentification de l'utilisateur.
Arguments | |
---|---|
includeAuthorizationData | Facultatif:Booléen indiquant s'il faut toujours renvoyer un jeton d'accès et des champs d'application Par défaut, le jeton d'accès et les champs d'application demandés ne sont pas renvoyés lorsque fetch_basic_profile est défini sur "true" (valeur par défaut) et qu'aucun champ d'application supplémentaire n'est demandé. |
Renvoie | |
---|---|
gapi.auth2.AuthResponse |
Un objet gapi.auth2.AuthResponse . |
GoogleUser.reloadAuthResponse()
Force l'actualisation du jeton d'accès, puis affiche une promesse pour la nouvelle réponse AuthResponse.
Renvoie | |
---|---|
Promise |
Un jeton Promise rempli avec l'identifiant gapi.auth2.AuthResponse rechargé lors de l'actualisation du jeton OAuth.
|
gapi.auth2.AuthResponse
Réponse renvoyée lors de l'appel des méthodes GoogleUser.getAuthResponse(includeAuthorizationData)
ou GoogleUser.reloadAuthResponse()
.
Propriétés | ||
---|---|---|
access_token |
string |
Jeton d'accès accordé. |
id_token |
string |
Jeton d'ID accordé. |
scope |
string |
Champs d'application autorisés dans le jeton d'accès. |
expires_in |
number |
Nombre de secondes jusqu'à l'expiration du jeton d'accès. |
first_issued_at |
number |
Horodatage du premier accès de l'utilisateur aux champs d'application demandés. |
expires_at |
number |
Horodatage du jeton d'accès. |
GoogleUser.hasGrantedScopes(scopes)
Renvoie la valeur "true" si l'utilisateur a accordé les champs d'application spécifiés.
Arguments | |
---|---|
scopes | Chaîne de champs d'application délimitée par des espaces. |
Renvoie | |
---|---|
Booléen | True si les champs d'application ont été accordés |
GoogleUser.grant(options)
Demandez des champs d'application supplémentaires à l'utilisateur.
Consultez GoogleAuth.signIn()
pour obtenir la liste des paramètres et le code d'erreur.
GoogleUser.grantOfflineAccess(options)
Obtenez l'autorisation de l'utilisateur pour accéder hors connexion aux champs d'application spécifiés.
Arguments | |
---|---|
options |
Un objet gapi.auth2.OfflineAccessOptions contenant des paires clé/valeur Par exemple : { scope: 'profile email' } |
GoogleUser.disconnect()
Révoque tous les champs d'application autorisés par l'utilisateur pour l'application.
Éléments de l'interface utilisateur
gapi.signin2.render(id et options)
Il affiche un bouton de connexion dans l'élément ayant l'ID donné, à l'aide des paramètres spécifiés par l'objet options.
Arguments | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
id | ID de l'élément dans lequel afficher le bouton de connexion. | ||||||||||||||||
options |
Objet contenant les paramètres à utiliser pour afficher le bouton. Par exemple :
{ scope: 'email', width: 200, height: 50, longtitle: true, theme: 'dark', onsuccess: handleSuccess, onfailure: handleFailure }Vous pouvez spécifier les options suivantes:
|
Avancé
gapi.auth2.authorize(params, callback)
Effectue une autorisation OAuth 2.0 unique. Selon les paramètres utilisés, une fenêtre pop-up s'ouvre dans le flux de connexion Google ou tente de charger la réponse demandée en mode silencieux, sans intervention de l'utilisateur.
Voici quelques cas d'utilisation où cette méthode est utile:
- Votre application n'a besoin de demander un point de terminaison d'API Google qu'une seule fois, par exemple pour charger les vidéos YouTube préférées de l'utilisateur lors de sa première connexion.
- Votre application dispose de sa propre infrastructure de gestion de session et ne requiert le jeton d'ID qu'une seule fois pour identifier l'utilisateur dans votre backend.
- Plusieurs ID client sont utilisés dans la même page.
Arguments | |
---|---|
params |
Objet contenant des paires clé/valeur des données de configuration. Consultez la section gapi.auth2.AuthorizeConfig pour connaître les différentes propriétés configurables. Exemple :
{ client_id: 'CLIENT_ID.apps.googleusercontent.com', scope: 'email profile openid', response_type: 'id_token permission' } |
callback |
Une fonction appelée avec un objet gapi.auth2.AuthorizeResponse une fois la requête terminée (en cas de réussite ou d'échec)
|
Exemple
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.
});
Codes d'erreur
idpiframe_initialization_failed
- Échec de l'initialisation d'un iFrame obligatoire de Google (par exemple, en raison d'un environnement non compatible). Une propriété
details
fournit plus d'informations sur l'erreur générée. popup_closed_by_user
- L'utilisateur a fermé le pop-up avant de terminer la procédure de connexion.
access_denied
- L'utilisateur a refusé l'autorisation d'accès aux champs d'application requis.
immediate_failed
-
Aucun utilisateur ne peut être sélectionné automatiquement sans que le parcours d'autorisation ne s'affiche. Erreur générée lors de l'utilisation de
signIn
avec l'optionprompt: 'none'
.
gapi.auth2.AuthorizeConfig
Interface qui représente les différents paramètres de configuration de la méthode gapi.auth2.authorize
.
Propriétés | ||
---|---|---|
client_id |
string |
Obligatoire : ID client de l'application, trouvé et créé dans Google Developers Console. |
scope |
string |
Obligatoire : Champs d'application à demander, sous forme de chaîne délimitée par des espaces. |
response_type |
string |
Liste de types de réponses délimités par des espaces. La valeur par défaut est 'permission' . Les valeurs possibles sont les suivantes :
|
prompt |
string |
Force un mode spécifique pour le flux de consentement. Les valeurs possibles sont les suivantes :
|
cookie_policy |
string |
Domaines pour lesquels vous souhaitez créer des cookies de connexion. URI, single_host_origin ou none . Si aucune valeur n'est spécifiée, la valeur par défaut est single_host_origin .
|
hosted_domain |
string |
Domaine G Suite auquel les utilisateurs doivent appartenir pour se connecter. Les clients étant susceptibles de les modifier, veillez à valider la propriété de domaine hébergée de l'utilisateur renvoyé. |
login_hint |
string |
Adresse e-mail, ou ID utilisateur, d'un utilisateur à présélectionner dans le flux de connexion. L'utilisateur est susceptible de le modifier, sauf si prompt: "none" est utilisé.
|
include_granted_scopes |
boolean |
Permet de spécifier si un jeton d'accès incluant tous les champs d'application précédemment accordés par l'utilisateur à l'application est demandé, ou uniquement les champs d'application demandés dans l'appel en cours. La valeur par défaut est true .
|
plugin_name |
string |
Facultatif. Si cette option est définie, les ID client créés avant le 29 juillet 2022 peuvent utiliser la bibliothèque Google Platform. Par défaut, les nouveaux ID client ne peuvent pas utiliser la bibliothèque de la plate-forme et doivent utiliser la nouvelle bibliothèque Google Identity Services. Vous pouvez choisir n'importe quelle valeur. Un nom descriptif tel qu'un nom de produit ou de plug-in est recommandé pour faciliter l'identification.
Exemple : plugin_name: 'YOUR_STRING_HERE'
|
gapi.auth2.AuthorizeResponse
Réponse renvoyée au rappel de la méthode gapi.auth2.authorize
.
Propriétés | ||
---|---|---|
access_token |
string |
Jeton d'accès accordé. Présent uniquement si permission ou token a été spécifié dans response_type .
|
id_token |
string |
Jeton d'ID accordé. Uniquement présente si id_token a été spécifié dans response_type .
|
code |
string |
Code d'autorisation accordé. Uniquement présente si code a été spécifié dans response_type .
|
scope |
string |
Champs d'application autorisés dans le jeton d'accès. Uniquement présente si permission ou token a été spécifié dans response_type .
|
expires_in |
number |
Nombre de secondes jusqu'à l'expiration du jeton d'accès. Uniquement présente si permission ou token a été spécifié dans response_type .
|
first_issued_at |
number |
Horodatage du premier accès de l'utilisateur aux champs d'application demandés. Présent uniquement si permission ou token a été spécifié dans response_type .
|
expires_at |
number |
Horodatage du jeton d'accès. Uniquement présente si permission ou token a été spécifié dans response_type .
|
error |
string |
Lorsque la requête échoue, elle contient le code d'erreur. |
error_subtype |
string |
Lorsque la requête échoue, elle peut contenir des informations supplémentaires au code d'erreur renvoyé. |