Documentation de référence sur le client JavaScript Google Sign-In

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Ce document de référence décrit les méthodes et attributs de client JavaScript que vous utiliserez pour implémenter Google Sign-In dans vos applications Web.

Si vous rencontrez un problème en utilisant 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 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 l'état de connexion de l'utilisateur de la session précédente.

Arguments
params Objet contenant des paires clé-valeur de données de configuration client. Consultez 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 L'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 est appelée.

Arguments
onInit Fonction appelée avec l'objet GoogleAuth lorsqu'elle est entièrement initialisée.
onError La fonction appelée avec un objet contenant une propriété error, si l'initialisation de GoogleAuth échoue.
Renvoie
Promesse Une valeur Promise qui est remplie lorsque la fonction onInit est terminée, ou qui est refusée si une erreur d'initialisation est générée. Il se résout 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 requis par 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. L'ID client de l'application, trouvé et créé dans la Google Developers Console.
cookie_policy string Domaines pour lesquels créer des cookies de connexion. URI, single_host_origin ou none. En l'absence de spécification, 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 Extrayez les informations de base des utilisateurs lorsqu'ils se connectent. Ajoute "profile" et "email" aux champs d'application demandés. Vrai si non spécifié.
hosted_domain string Domaine G Suite auquel les utilisateurs doivent appartenir pour se connecter. Les clients peuvent le modifier. Veillez donc à valider la propriété de domaine hébergée de l'utilisateur renvoyé. Utilisez GoogleUser.getHostedDomain() sur le client, et la revendication hd du jeton d'ID sur le serveur permet de vérifier que le domaine est conforme à vos attentes.
ux_mode string Mode d'expérience utilisateur à utiliser pour le flux de connexion. Par défaut, il ouvre le flux de consentement 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 le redirect_uri par défaut qui sera utilisé à la fin du flux de consentement. La valeur par défaut redirect_uri est l'URL actuelle supprimée 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 nouveaux ID client ne peuvent plus utiliser la bibliothèque de plate-forme et doivent désormais utiliser la nouvelle bibliothèque de services Google Identity. Vous pouvez choisir n'importe quelle valeur. Un nom descriptif tel que le nom du produit ou du 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 du profil Google de l'utilisateur, 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 L'objet gapi.auth2.GoogleAuth. Utilisez cet objet pour appeler les méthodes 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(liste)

Écoutez les modifications apportées à l'état de connexion de l'utilisateur actuel.

Arguments
listener Fonction qui accepte une valeur booléenne. listen() transmet true à cette fonction lorsque l'utilisateur se connecte, et false lorsque l'utilisateur se déconnecte.

GoogleAuth.signIn().

Permet à l'utilisateur de se connecter avec les options spécifiées dans gapi.auth2.init().

Renvoie
Promesse Une valeur Promise fournie avec l'instance GoogleUser lorsque l'utilisateur authentifie et accorde les champs d'application demandés, ou refusée 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)

Permet de connecter l'utilisateur à l'aide des options spécifiées.

Arguments
options Au choix :
  • Un objet gapi.auth2.SignInOptions contenant des paires clé/valeur des paramètres de connexion. Par exemple :
    {
      scope: 'profile email'
    }
  • Instance de gapi.auth2.SigninOptionsBuilder. Exemple:
    options = new gapi.auth2.SigninOptionsBuilder();
    options.setAppPackageName('com.example.app');
    options.setFetchBasicProfile(True);
    options.setPrompt('select_account');
    options.setScope('profile').setScope('email');
Renvoie
Promesse Une valeur Promise fournie avec l'instance GoogleUser lorsque l'utilisateur authentifie et accorde les champs d'application demandés, ou refusée 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 afficher le flux de consentement. Erreur générée lors de l'utilisation de signIn avec l'option prompt: 'none'. Cette option ne doit pas être requise, car gapi.auth2.init se connectera automatiquement si l'utilisateur s'était précédemment connecté lors d'une session précédente.

gapi.auth2.SignInOptions (en anglais)

Interface qui représente les différents paramètres de configuration de la méthode GoogleAuth.signIn(options).

Paramètres
prompt string Force l'application d'un mode spécifique pour le flux de consentement. Facultatif.
Les valeurs possibles sont les suivantes :
  • consent
    Le serveur d'autorisation invite l'utilisateur à donner son consentement avant de renvoyer des informations à l'application.
  • select_account
    Le serveur d'autorisation invite l'utilisateur à sélectionner un compte Google. Cette option permet à un utilisateur disposant de plusieurs comptes de sélectionner les comptes pour lesquels des sessions peuvent être en cours.
  • none (non recommandé)
    Le serveur d'autorisation n'affiche aucun écran d'authentification ou de consentement de l'utilisateur. Il renvoie une erreur si l'utilisateur n'est pas déjà authentifié et s'il n'a pas encore accepté les champs d'application demandés.
    Comme gapi.auth2.init connectera automatiquement un utilisateur à l'application s'il était déjà connecté, l'appel de signIn({prompt: 'none'}) échoue généralement.
scope string Champs d'application à demander, sous forme de 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 flux de connexion. Par défaut, il ouvre le flux de consentement 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 le redirect_uri par défaut qui sera utilisé à la fin du flux de consentement. La valeur 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 Une valeur Promise qui est remplie lorsque l'utilisateur est déconnecté.

GoogleAuth.disconnect().

Révoque tous les champs d'application autorisés par l'utilisateur.

GoogleAuth.grantOfflineAccess(options)

Obtenez l'autorisation de l'utilisateur d'accéder hors connexion aux champs d'application spécifiés.

Arguments
options Un objet gapi.auth2.OfflineAccessOptions contenant des paires clé/valeur de paramètres. Par exemple :
{
  scope: 'profile email'
}
Renvoie
Promesse Une valeur Promise qui est remplie lorsque l'utilisateur accorde les champs d'application demandés et transmet 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 le flux de consentement.
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 afficher le flux de consentement. Erreur générée lors de l'utilisation de signIn avec l'option prompt: 'none'. Cette option ne doit pas être requise, car gapi.auth2.init se connectera automatiquement si l'utilisateur s'était précédemment connecté lors d'une session précédente.

gapi.auth2.Hors connexion

Interface qui représente les différents paramètres de configuration de la méthode GoogleAuth.grantOfflineAccess(options).

Paramètres
prompt string Force l'application d'un mode spécifique pour le flux de consentement. Facultatif.
Les valeurs possibles sont les suivantes :
  • consent
    Le serveur d'autorisation invite l'utilisateur à donner son consentement avant de renvoyer des informations à l'application.
  • select_account
    Le serveur d'autorisation invite l'utilisateur à sélectionner un compte Google. Cette option permet à un utilisateur disposant de plusieurs comptes de sélectionner les comptes pour lesquels des sessions peuvent être en cours.
scope string Champs d'application à demander, sous forme de 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 ou élément de référence de l'élément div auquel associer le gestionnaire de clics.
options Objet contenant des paires clé-valeur de paramètres. 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)

Écouter les modifications apportées à currentUser.

Arguments
listener Une fonction qui accepte 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
String L'identifiant unique de l'utilisateur

GoogleUser.isSignedIn()

Renvoie la valeur "true" si l'utilisateur est connecté.

Renvoie
Booléen Vraie si l'utilisateur est connecté

GoogleUser.getHostedDomain()

Procurez-vous le domaine G Suite de l'utilisateur s'il s'est connecté avec un compte G Suite.

Renvoie
String Domaine G Suite de l'utilisateur

GoogleUser.getGrantedScopes()

Obtenez les champs d'application accordés par l'utilisateur sous forme de chaîne délimitée par des espaces.

Renvoie
String Champs d'application autorisés par l'utilisateur

GoogleUser.getBasicProfile()

Obtenez 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 :
  • BasicProfile.getId()
  • BasicProfile.getName()
  • BasicProfile.getGivenName()
  • BasicProfile.getFamilyName()
  • BasicProfile.getImageUrl()
  • BasicProfile.getEmail()

GoogleUser.getAuthResponse(includeAuthorizationData)

Récupérez l'objet de réponse à partir de la session d'authentification de l'utilisateur.

Arguments
includeAuthorizationData Facultatif:valeur booléenne 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 niveau d'accès supplémentaire n'est demandé.
Renvoie
gapi.auth2.AuthResponse Un objet gapi.auth2.AuthResponse.

GoogleUser.reloadAuthResponse()

Forcer l'actualisation du jeton d'accès, puis renvoyer une promesse pour la nouvelle réponse AuthResponse.

Renvoie
Promise Une commande Promise exécutée avec l'option gapi.auth2.AuthResponse actualisée 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 Durée, en secondes, avant l'expiration du jeton d'accès.
first_issued_at number Horodatage auquel l'utilisateur a initialement accordé les champs d'application demandés.
expires_at number Horodatage auquel le jeton d'accès expire.

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 Vrai 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 d'accéder hors connexion aux champs d'application spécifiés.

Arguments
options Un objet gapi.auth2.OfflineAccessOptions contenant des paires clé/valeur de paramètres. 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, options)

affiche un bouton de connexion dans l'élément avec l'ID donné, en utilisant les 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:
Paramètres
champ d'application Champs d'application à demander lorsque l'utilisateur se connecte (par défaut : profile).
largeur Largeur du bouton en pixels (valeur par défaut : 120).
hauteur Hauteur du bouton en pixels (valeur par défaut: 36).
titre long Affichez des libellés longs tels que "Se connecter avec Google" plutôt que "Se connecter" (par défaut : false). Lorsque vous utilisez des titres longs, vous devez agrandir la largeur du bouton par défaut.
thème Thème de couleur du bouton: light ou dark (par défaut: light).
en cas de réussite Fonction de rappel à appeler lorsqu'un utilisateur se connecte correctement. Cette fonction doit utiliser un argument: une instance de gapi.auth2.GoogleUser (par défaut: aucun).
échec Fonction de rappel à appeler en cas d'échec de la connexion. Cette fonction n'accepte aucun argument (valeur par défaut: aucun).

Analyses

gapi.auth2.autorise(params, callback)

Effectue une autorisation OAuth 2.0 unique. En fonction des paramètres utilisés, une fenêtre pop-up s'affiche pour le flux de connexion Google ou tente de charger la réponse demandée en mode silencieux, sans interaction de l'utilisateur.

Cette méthode est utile dans certains cas d'utilisation:

  • Votre application ne doit 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 n'a besoin du jeton d'ID qu'une seule fois pour identifier l'utilisateur dans votre backend.
  • Plusieurs ID client sont utilisés sur la même page.
Arguments
params Objet contenant des paires clé-valeur de données de configuration. Consultez 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 (avec succès ou en é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 requis par 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 afficher le flux de consentement. Erreur générée lors de l'utilisation de signIn avec l'option prompt: '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. L'ID client de l'application, trouvé et créé dans la 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éponse séparés par un espace. La valeur par défaut est 'permission'. Les valeurs possibles sont les suivantes :
  • id_token, pour récupérer un jeton d'ID
  • permission (ou token), pour récupérer un jeton d'accès
  • code, pour récupérer un code d'autorisation
prompt string Force l'application d'un mode spécifique pour le flux de consentement. Les valeurs possibles sont les suivantes :
  • consent
    Le serveur d'autorisation invite l'utilisateur à donner son consentement avant de renvoyer des informations à l'application.
  • select_account
    Le serveur d'autorisation invite l'utilisateur à sélectionner un compte Google. Cette option permet à un utilisateur disposant de plusieurs comptes de sélectionner les comptes pour lesquels des sessions peuvent être en cours.
  • none
    Le serveur d'autorisation n'affiche aucun écran d'authentification ou de consentement. Il renvoie une erreur si l'utilisateur n'est pas déjà authentifié et s'il n'a pas encore accepté les champs d'application demandés.
    Si le type de réponse code est demandé, le code renvoyé sera uniquement échangeable contre un access_token, et non un refresh_token.
cookie_policy string Domaines pour lesquels créer des cookies de connexion. URI, single_host_origin ou none. En l'absence de spécification, 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 peuvent le modifier. Veillez donc à 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 peut le modifier, sauf si prompt: "none" est utilisé.
include_granted_scopes boolean Permet de demander un jeton d'accès incluant tous les champs d'application précédemment accordés par l'utilisateur à l'application, 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 Platform et doivent utiliser la nouvelle bibliothèque Google Identity Services. Vous pouvez choisir n'importe quelle valeur. Un nom descriptif tel que le nom du produit ou du 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é. Présent uniquement si id_token a été spécifié dans response_type.
code string Code d'autorisation accordé. Présent uniquement si code a été spécifié dans response_type.
scope string Champs d'application autorisés dans le jeton d'accès. Présent uniquement si permission ou token a été spécifié dans response_type.
expires_in number Durée, en secondes, avant l'expiration du jeton d'accès. Présent uniquement si permission ou token a été spécifié dans response_type.
first_issued_at number Horodatage auquel l'utilisateur a initialement accordé les champs d'application demandés. Présent uniquement si permission ou token a été spécifié dans response_type.
expires_at number Horodatage auquel le jeton d'accès expire. Présent uniquement si permission ou token a été spécifié dans response_type.
error string Lorsque la requête échoue, il contient le code d'erreur.
error_subtype string Lorsque la requête échoue, il peut contenir des informations supplémentaires au code d'erreur également renvoyé.