Guide conceptuel Google Sign-In

Google Sign-In (GSI) pour l'Assistant offre aux utilisateurs l'expérience d'association la plus fluide et constitue le flux le plus facile à implémenter pour les développeurs. Avec GSI, votre action peut demander l'accès au profil Google de l'utilisateur au cours d'une conversation et, si l'utilisateur donne son consentement, recevoir son nom, son adresse e-mail et sa photo de profil. Votre action peut ensuite utiliser ces informations pour vérifier si l'utilisateur possède un compte Google dans votre système. Si ce n'est pas le cas, votre action demande à l'utilisateur s'il souhaite créer un compte dans votre système à partir des informations de son profil Google.

Les GSI sont la solution d'association de comptes recommandée dans les cas suivants:

  • Vous ne disposez pas d'un système d'authentification et/ou vous pensez que tous vos utilisateurs possèdent un compte Google. Par exemple, si votre action cible spécifiquement l'Assistant, tous vos utilisateurs doivent disposer d'un compte Google.
  • Vous disposez d'un système d'authentification existant et souhaitez n'associer que les utilisateurs qui se sont connectés à votre système à l'aide de leur compte Google.

Pour vérifier que les GSI vous conviennent, consultez la page Choisir votre type d'association de compte.

Termes clés

Avant de découvrir le fonctionnement des GSI, familiarisez-vous avec les termes suivants:

  • Jeton d'ID Google:assertion signée de l'identité d'un utilisateur, contenant les informations de base de son profil Google (nom, adresse e-mail et photo de profil). Un jeton d'ID Google est un jeton Web JSON (JWT).

    Voici un exemple de jeton décodé:

{
  "sub": 1234567890,        // The unique ID of the user's Google Account
  "iss": "https://accounts.google.com",        // The token's issuer
  "aud": "123-abc.apps.googleusercontent.com", // Client ID assigned to your Actions project
  "iat": 233366400,         // Unix timestamp of the token's creation time
  "exp": 233370000,         // Unix timestamp of the token's expiration time
  "name": "Jan Jansen",
  "given_name": "Jan",
  "family_name": "Jansen",
  "email": "jan@gmail.com", // If present, the user's email address
  "locale": "en_US"
}
  • user.verificationStatus:propriété définie par le système pour indiquer si la session en cours comporte un utilisateur validé.

  • user.accountLinkingStatus:propriété définie par le système pour indiquer si l'utilisateur de la session en cours est associé à une identité.

  • Scène système d'association de comptes:scène prédéfinie qui implémente le flux de confirmation pour l'association de comptes et peut être personnalisée pour répondre à des cas d'utilisation spécifiques.

Fonctionnement

Voici le flux de base pour les GSI:

  1. Votre action demande à l'utilisateur l'autorisation d'accéder à son profil Google.
  2. Une fois que l'utilisateur a donné son consentement, votre action reçoit un jeton d'ID Google contenant les informations de son profil Google.
  3. Validez et décodez le jeton pour lire le contenu du profil. Si vous utilisez la bibliothèque de traitement Actions on Google pour Node.js, elle valide et décode le jeton pour vous.
  4. Votre action utilise ce jeton pour vérifier si les informations du profil Google de l'utilisateur existent dans votre système.

    1. Si c'est le cas, cela signifie que l'utilisateur s'est déjà connecté à votre système avec son compte Google. L'utilisateur peut poursuivre la conversation avec l'Assistant en utilisant son identité associée à son compte Google.
    2. Si ce n'est pas le cas, l'utilisateur peut créer un compte dans votre système avec les informations contenues dans le jeton d'ID Google. L'utilisateur peut alors poursuivre la conversation avec l'Assistant en associant son nouveau compte.

Flux Google Sign-In

Cette section décrit les différents flux pouvant avoir lieu avec Google Sign-In.

Flux 1: Les informations de l'utilisateur existent dans votre système

Le schéma suivant illustre le flux de bout en bout qui se produit avec les GSI lorsque les informations de l'utilisateur existent déjà dans votre système:

Dans ce cas, vous passez à la scène du système d'association de comptes et fournissez une justification personnalisée. Cette scène demande à l'utilisateur l'autorisation d'accéder aux informations de son profil Google.

Une fois que l'utilisateur a donné son consentement, l'Assistant envoie une requête contenant les informations de profil pour user@gmail.com. Dans ce cas, les informations contenues dans le jeton d'ID Google pour user@gmail.com correspondent à un compte de votre système. Par conséquent, l'identité de l'utilisateur dans votre action est automatiquement associée à ce compte. Le webhook peut ensuite lire la commande habituelle de l'utilisateur à partir d'une base de données et répondre en conséquence.

Flow 2: Les informations de l'utilisateur n'existent pas dans votre système

Le schéma suivant illustre le flux de bout en bout qui se produit avec une GSI lorsque les informations de l'utilisateur n'existent pas dans votre système:

Dans ce cas, les informations contenues dans le jeton d'ID Google pour user@gmail.com ne correspondent à aucun compte de votre système. L'Assistant demande donc à l'utilisateur s'il souhaite créer un compte. L'utilisateur peut terminer le processus de création du compte par commande vocale au lieu de le transférer vers un appareil vérifié.

Lorsque l'utilisateur accepte de créer un compte, votre service utilise les informations du jeton d'ID (nom et adresse e-mail de l'utilisateur) afin de créer un compte pour l'utilisateur. Une fois le compte créé, l'identité de l'utilisateur dans votre action est associée à son nouveau compte Google.

Dans ce cas, l'utilisateur n'a pas de commande habituelle, car il est nouveau sur le service. Votre action lui demande donc ce qu'il souhaite commander. Vous pouvez également demander à l'utilisateur s'il souhaite définir sa commande la plus récente comme commande habituelle.