Nous désistait de JavaScript de connexion Google Platform Library pour le Web . Pour la connexion à l' authentification et l' utilisateur, utilisez le nouveau Google Identity Services SDKs pour les Web et Android à la place.

Référence du client JavaScript Google Sign-In

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

Si vous rencontrez un problème lors de l'utilisation de la bibliothèque, veuillez le signaler à notre référentiel GitHub .

Configuration de l'authentification

Chargez la bibliothèque de la plate-forme des 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 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 configurez l'objet avec votre ID client OAuth 2.0 et toutes les options supplémentaires 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 à partir de la session précédente.

Arguments
params Un objet contenant des paires clé-valeur de données de configuration client. Voir gapi.auth2.ClientConfig pour les différentes propriétés configurables. Par exemple:
{
  client_id: 'CLIENT_ID.apps.googleusercontent.com'
}
Retour
gapi.auth2.GoogleAuth L'objet gapi.auth2.GoogleAuth . Utilisez la méthode then () pour obtenir une promesse qui est résolue lorsque l'objet gapi.auth2.GoogleAuth terminé l'initialisation.

GoogleAuth.then ( onInit , onError )

Appelle la fonction onInit lorsque l'objet GoogleAuth est entièrement initialisé. Si une erreur est générée lors de l'initialisation (cela peut se produire dans les anciens navigateurs non pris en charge), la fonction onError sera appelée à la place.

Arguments
onInit La fonction appelée avec l'objet GoogleAuth lorsqu'il est complètement initialisé.
onError La fonction appelée avec un objet contenant une propriété d' error , si GoogleAuth n'a pas pu s'initialiser.
Retour
Promettre Une Promise qui est remplie lorsque la fonction onInit est terminée, ou rejetée si une erreur d'initialisation a été déclenchée. Il 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'une iframe requise de Google, par exemple, en raison d'un environnement non pris en charge. Une propriété details donnera plus d'informations sur l'erreur soulevé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 Les domaines pour lesquels créer des cookies de connexion. Soit un URI, single_host_origin , ou none . La valeur par défaut est single_host_origin si non spécifié.
scope string Les étendues à 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ère les informations de profil de base des utilisateurs lorsqu'ils se connectent. Ajoute "profile", "email" et "openid" aux champs d'application demandés. Vrai si non spécifié.
hosted_domain string Le domaine G Suite auquel les utilisateurs doivent appartenir pour se connecter. Il est susceptible d'être modifié par les clients. Assurez-vous donc de vérifier la propriété du domaine hébergé de l'utilisateur renvoyé. Utilisez GoogleUser.getHostedDomain () sur le client et la revendication hd dans le jeton d'identification sur le serveur pour vérifier que le domaine est ce que vous attendiez.
ux_mode string Le mode UX à utiliser pour le flux de connexion. Par défaut, il ouvrira le flux de consentement dans une fenêtre contextuelle. 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. L'URL par défaut redirect_uri est l'URL actuelle dépourvue de paramètres de requête et de fragment de hachage.

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 portées 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.

Retour
gapi.auth2.GoogleAuth L'objet gapi.auth2.GoogleAuth . Utilisez cet objet pour appeler les méthodes de gapi.auth2.GoogleAuth .

GoogleAuth.isSignedIn.get ()

Renvoie si l'utilisateur actuel est actuellement connecté.

Retour
Booléen true si l'utilisateur est connecté, ou false si l'utilisateur est déconnecté ou GoogleAuth objet GoogleAuth n'est pas initialisé.

GoogleAuth.isSignedIn.listen (auditeur)

Écoutez les changements dans l'état de connexion de l'utilisateur actuel.

Arguments
listener Une fonction qui prend une valeur booléenne. listen() passe true à cette fonction lorsque l'utilisateur se connecte et false lorsque l'utilisateur se déconnecte.

GoogleAuth.signIn ()

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

Retour
Promettre Une Promise qui est remplie avec l'instance GoogleUser lorsque l'utilisateur s'authentifie avec succès et accorde les étendues demandées, ou rejetée avec un objet contenant une propriété d' error si une erreur s'est produite (voir ci-dessous pour les codes d'erreur).

Codes d'erreur

Voir GoogleAuth.signIn( options ) .

GoogleAuth.signIn ( options )

Connectez l'utilisateur à l'aide des options spécifiées.

Arguments
options Soit:
  • Un objet gapi.auth2.SignInOptions contenant des paires clé-valeur de paramètres de connexion. Par exemple:
    {
      scope: 'profile email'
    }
  • Une instance de gapi.auth2.SigninOptionsBuilder . Par exemple:
    options = new gapi.auth2.SigninOptionsBuilder();
    options.setAppPackageName('com.example.app');
    options.setFetchBasicProfile(True);
    options.setPrompt('select_account');
    options.setScope('profile').setScope('email');
Retour
Promettre Une Promise qui est remplie avec l'instance GoogleUser lorsque l'utilisateur s'authentifie avec succès et accorde les étendues demandées, ou rejetée avec un objet contenant une propriété d' error si une erreur s'est produite (voir ci-dessous pour les codes d'erreur).

Codes d'erreur

popup_closed_by_user
L'utilisateur a fermé la fenêtre contextuelle avant de terminer le processus de connexion.
access_denied
L'utilisateur a refusé l'autorisation sur les étendues requises.
immediate_failed
Aucun utilisateur ne peut être sélectionné automatiquement sans demander le flux de consentement. Erreur générée lors de l'utilisation de la signIn avec l' prompt: 'none' option prompt: 'none' . Cette option ne devrait pas être obligatoire, car gapi.auth2.init se connectera automatiquement à l'utilisateur s'il gapi.auth2.init déjà connecté lors d'une session précédente.

gapi.auth2.SignInOptions

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

Paramètres
prompt string Force un mode spécifique pour le flux de consentement. Optionnel.
Les valeurs possibles sont:
  • 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. Cela permet à un utilisateur qui possède plusieurs comptes de sélectionner parmi les multiples comptes pour lesquels il peut avoir des sessions en cours.
  • none ( non recommandé )
    Le serveur d'autorisation n'affichera aucun écran d'authentification ou de consentement de l'utilisateur; il renverra une erreur si l'utilisateur n'est pas déjà authentifié et n'a pas préalablement consenti aux étendues demandées.
    Comme gapi.auth2.init connectera automatiquement un utilisateur à l'application s'il était précédemment connecté, l'appel de signIn({prompt: 'none'}) échouera généralement.
scope string Les étendues à demander, sous forme de chaîne délimitée par des espaces, en plus des étendues définies dans les paramètres gapi.auth2.init . Facultatif si fetch_basic_profile n'est pas défini sur false.
ux_mode string Le mode UX à utiliser pour le flux de connexion. Par défaut, il ouvrira le flux de consentement dans une fenêtre contextuelle. 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. L'URL par défaut redirect_uri est l'URL actuelle dépourvue de paramètres de requête et de fragment de hachage.

GoogleAuth.signOut ()

Déconnecte le compte actuel de l'application.

Retour
Promettre Une Promise qui est remplie lorsque l'utilisateur a été déconnecté.

GoogleAuth.disconnect ()

Révoque toutes les étendues accordées par l'utilisateur.

GoogleAuth.grantOfflineAccess ( options )

Obtenez l'autorisation de l'utilisateur pour accéder aux étendues spécifiées hors connexion.

Arguments
options Un objet gapi.auth2.OfflineAccessOptions contenant des paires clé-valeur de paramètres. Par exemple:
{
  scope: 'profile email'
}
Retour
Promettre Une Promise qui est remplie lorsque l'utilisateur accorde les étendues demandées, en transmettant un objet contenant le code d'autorisation au gestionnaire d'exécution de la Promise . Par exemple:
auth2.grantOfflineAccess().then(function(resp) {
  var auth_code = resp.code;
});

Codes d'erreur

popup_closed_by_user
L'utilisateur a fermé la fenêtre contextuelle avant de terminer le processus de consentement.
access_denied
L'utilisateur a refusé l'autorisation sur les étendues requises.
immediate_failed
Aucun utilisateur ne peut être sélectionné automatiquement sans demander le flux de consentement. Erreur générée lors de l'utilisation de la signIn avec l' prompt: 'none' option prompt: 'none' . Cette option ne devrait pas être obligatoire, car gapi.auth2.init se connectera automatiquement à l'utilisateur s'il gapi.auth2.init déjà connecté lors d'une session précédente.

gapi.auth2.OfflineAccessOptions

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

Paramètres
prompt string Force un mode spécifique pour le flux de consentement. Optionnel.
Les valeurs possibles sont:
  • 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. Cela permet à un utilisateur qui possède plusieurs comptes de sélectionner parmi les multiples comptes pour lesquels il peut avoir des sessions en cours.
scope string Les étendues à demander, sous forme de chaîne délimitée par des espaces, en plus des étendues définies 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 L'ID ou une référence à l'élément div auquel attacher le gestionnaire de clics.
options Un objet contenant des paires de paramètres clé-valeur. Voir GoogleAuth.signIn () .
onsuccess La fonction à appeler une fois la connexion terminée.
onfailure La fonction à appeler si la connexion échoue.

Utilisateurs

Un objet GoogleUser représente un compte utilisateur. GoogleUser 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.

Retour
GoogleUser L'utilisateur actuel

GoogleAuth.currentUser.listen ( listener )

Écoutez les changements dans currentUser.

Arguments
listener Une fonction qui prend un paramètre GoogleUser . listen transmet à cette fonction une instance de GoogleUser à chaque changement qui modifie currentUser .

GoogleUser.getId ()

Obtenez la chaîne d'identifiant unique de l'utilisateur.

Retour
Chaîne L'identifiant unique de l'utilisateur

GoogleUser.isSignedIn ()

Renvoie true si l'utilisateur est connecté.

Retour
Booléen Vrai si l'utilisateur est connecté

GoogleUser.getHostedDomain ()

Obtenez le domaine G Suite de l'utilisateur si l'utilisateur s'est connecté avec un compte G Suite.

Retour
Chaîne Le domaine G Suite de l'utilisateur

GoogleUser.getGrantedScopes ()

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

Retour
Chaîne Les portées accordées par l'utilisateur

GoogleUser.getBasicProfile ()

Obtenez les informations de base sur le profil de l'utilisateur.

Retour
gapi.auth2.BasicProfile Vous pouvez récupérer les propriétés de gapi.auth2.BasicProfile avec les méthodes suivantes:
  • BasicProfile.getId ()
  • BasicProfile.getName ()
  • BasicProfile.getGivenName ()
  • BasicProfile.getFamilyName ()
  • BasicProfile.getImageUrl ()
  • BasicProfile.getEmail ()

GoogleUser.getAuthResponse (includeAuthorizationData)

Obtenez l'objet de réponse à partir de la session d'authentification de l'utilisateur.

Arguments
includeAuthorizationData Facultatif: un booléen qui spécifie s'il faut toujours renvoyer un jeton d'accès et des étendues. Par défaut, le jeton d'accès et les étendues demandées ne sont pas retournés lorsque fetch_basic_profile la valeur true (la valeur par défaut) et qu'aucune étendue supplémentaire n'est demandée.
Retour
gapi.auth2.AuthResponse Un objet gapi.auth2.AuthResponse .

GoogleUser.reloadAuthResponse ()

Force une actualisation du jeton d'accès, puis renvoie une promesse pour la nouvelle AuthResponse.

Retour
Promise Une Promise qui est remplie avec le gapi.auth2.AuthResponse rechargé lors du rechargement du jeton OAuth est effectuée.

gapi.auth2.AuthResponse

La réponse renvoyée lors de l'appel des GoogleUser.getAuthResponse( includeAuthorizationData ) ou GoogleUser.reloadAuthResponse() .

Propriétés
access_token string Le jeton d'accès accordé.
id_token string Le jeton d'identification accordé.
scope string Les étendues accordées dans le jeton d'accès.
expires_in number Le nombre de secondes avant l'expiration du jeton d'accès.
first_issued_at number Horodatage auquel l'utilisateur a accordé pour la première fois les étendues demandées.
expires_at number L'horodatage auquel le jeton d'accès expirera.

GoogleUser.hasGrantedScopes ( scopes )

Renvoie true si l'utilisateur a accordé les étendues spécifiées.

Arguments
scopes Une chaîne d'étendues délimitée par des espaces.
Retour
Booléen Vrai si les portées ont été accordées

GoogleUser.grant ( options )

Demandez des portées supplémentaires à l'utilisateur.

Voir GoogleAuth.signIn() pour la liste des paramètres et le code d'erreur.

GoogleUser.grantOfflineAccess ( options )

Obtenez l'autorisation de l'utilisateur pour accéder aux étendues spécifiées hors connexion.

Arguments
options Un objet gapi.auth2.OfflineAccessOptions contenant des paires clé-valeur de paramètres. Par exemple:
{
  scope: 'profile email'
}

GoogleUser.disconnect ()

Révoque toutes les étendues accordées par l'utilisateur pour l'application.

Éléments de l'interface utilisateur

gapi.signin2.render ( id , options )

Rend 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 Un objet contenant les paramètres à utiliser pour rendre 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
portée Les étendues à demander lorsque l'utilisateur se connecte (par défaut: profile ).
largeur La largeur du bouton en pixels (par défaut: 120 ).
la taille La hauteur du bouton en pixels (par défaut: 36 ).
long titre 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 augmenter la largeur du bouton par rapport à sa valeur par défaut.
thème Le thème de couleur du bouton: light ou dark (par défaut: light ).
en cas de succès La fonction de rappel à appeler lorsqu'un utilisateur se gapi.auth2.GoogleUser avec succès. Cette fonction doit accepter un argument: une instance de gapi.auth2.GoogleUser (par défaut: aucun).
en cas d'échec La fonction de rappel à appeler lorsque la connexion échoue. Cette fonction ne prend aucun argument (par défaut: aucun).

Avancée

gapi.auth2.authorize ( params , callback )

Exécute une autorisation OAuth 2.0 unique. Selon les paramètres utilisés, cela ouvrira une fenêtre contextuelle dans le flux de connexion Google ou tentera de charger la réponse demandée en silence, sans intervention de l'utilisateur.

Certains cas d'utilisation où cette méthode est utile incluent:

  • 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 la première fois qu'il se connecte.
  • Votre application dispose de sa propre infrastructure de gestion de session et n'a besoin du jeton d'identification qu'une seule fois pour identifier l'utilisateur dans votre backend.
  • Plusieurs ID client sont utilisés dans la même page.
Arguments
params Un objet contenant des paires clé-valeur de données de configuration. Voir gapi.auth2.AuthorizeConfig pour les différentes propriétés configurables. Par 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 avec un é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'une iframe requise de Google, par exemple, en raison d'un environnement non pris en charge. Une propriété details donnera plus d'informations sur l'erreur soulevée.
popup_closed_by_user
L'utilisateur a fermé la fenêtre contextuelle avant de terminer le processus de connexion.
access_denied
L'utilisateur a refusé l'autorisation sur les étendues requises.
immediate_failed
Aucun utilisateur ne peut être sélectionné automatiquement sans demander le flux de consentement. Erreur générée lors de l'utilisation de la signIn avec l' prompt: 'none' 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 . Les étendues à demander, sous forme de chaîne délimitée par des espaces.
response_type string Une liste de types de réponse séparés par des espaces. La valeur par défaut est 'permission' . Les valeurs possibles sont:
  • id_token , pour récupérer un jeton d'identification
  • permission (ou token ), pour récupérer un jeton d'accès
  • code , pour récupérer un code d'autorisation
prompt string Force un mode spécifique pour le flux de consentement. Les valeurs possibles sont:
  • 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. Cela permet à un utilisateur qui possède plusieurs comptes de sélectionner parmi les multiples comptes pour lesquels il peut avoir des sessions en cours.
  • none
    Le serveur d'autorisation n'affichera aucun écran d'authentification ou de consentement de l'utilisateur; il renverra une erreur si l'utilisateur n'est pas déjà authentifié et n'a pas préalablement consenti aux étendues demandées.
    Si le code est demandé comme type de réponse, le code retourné ne sera échangeable que pour un access_token , pas un refresh_token .
cookie_policy string Les domaines pour lesquels créer des cookies de connexion. Soit un URI, single_host_origin , ou none . La valeur par défaut est single_host_origin si non spécifié.
hosted_domain string Le domaine G Suite auquel les utilisateurs doivent appartenir pour se connecter. Il est susceptible d'être modifié par les clients. Assurez-vous donc de vérifier la propriété du domaine hébergé de l'utilisateur renvoyé.
login_hint string Adresse e-mail, ou ID utilisateur, d'un utilisateur à présélectionner dans le flux de connexion. Ceci est susceptible d'être modifié par l'utilisateur, sauf si l' prompt: "none" n'est utilisé.
include_granted_scopes boolean Indique s'il faut demander un jeton d'accès qui inclut toutes les étendues précédemment accordées par l'utilisateur à l'application, ou uniquement les étendues demandées dans l'appel en cours. La valeur par défaut est true .

gapi.auth2.AuthorizeResponse

La réponse est retournée au rappel de la méthode gapi.auth2.authorize .

Propriétés
access_token string Le jeton d'accès accordé. Présent uniquement si l' permission ou le token été spécifié dans le response_type .
id_token string Le jeton d'identification accordé. Présent uniquement si id_token été spécifié dans response_type .
code string Le code d'autorisation accordé. Présent uniquement si le code été spécifié dans response_type .
scope string Les étendues accordées dans le jeton d'accès. Présent uniquement si l' permission ou le token été spécifié dans le response_type .
expires_in number Le nombre de secondes avant l'expiration du jeton d'accès. Présent uniquement si l' permission ou le token été spécifié dans le response_type .
first_issued_at number Horodatage auquel l'utilisateur a accordé pour la première fois les étendues demandées. Présent uniquement si l' permission ou le token été spécifié dans le response_type .
expires_at number L'horodatage auquel le jeton d'accès expirera. Présent uniquement si l' permission ou le token été spécifié dans le response_type .
error string Lorsque la demande a échoué, cela contient le code d'erreur .
error_subtype string Lorsque la demande a échoué, cela peut contenir des informations supplémentaires sur le code d'erreur également renvoyé.