Guide conceptuel Google Sign-In

Google Sign-In (GSI) pour l'Assistant offre l'association la plus fluide possible pour les utilisateurs et constitue le processus le plus simple à implémenter pour les développeurs. Avec les GSI, votre action peut demander l'accès au profil Google de votre utilisateur pendant une conversation et, s'il accepte, de recevoir son nom, son adresse e-mail, et votre photo de profil. Votre action peut ensuite utiliser ces informations pour vérifier si utilisateur dispose d'un compte Google dans votre système. Si ce n'est pas le cas, votre action demande à l'utilisateur créer un compte dans votre système à l'aide de ses informations informations de profil.

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

  • Vous n'avez pas de système d'authentification et/ou vous attendez d'avoir un compte Google. Par exemple, si votre action est spécifiquement cible de l'Assistant, vous pouvez vous attendre à ce que tous les utilisateurs Google Cloud.
  • Vous disposez d'un système d'authentification existant et souhaitez uniquement associer les utilisateurs connectés à votre système à l'aide de leur compte Google.

Pour vérifier que GSI est la solution qui vous convient, consultez la Page Sélectionnez le type d'association de vos comptes.

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 du profil Google de l'utilisateur (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 le la session en cours comporte un utilisateur validé.

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

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

Fonctionnement

Le flux fondamental des GSI est le suivant:

  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 qui contenant les informations du profil Google de l'utilisateur.
  3. Validez et décodez le jeton pour lire le contenu du profil. Si vous utilisez les Bibliothèque Fulfillment Actions on Google pour Node.js il valide et décode le jeton pour vous.
  4. Votre action utilise ce jeton pour vérifier si le profil Google de l'utilisateur des informations existent dans votre système.

    1. Si c'est le cas, l'utilisateur s'est déjà connecté à votre système avec son compte Google. L'utilisateur peut poursuivre la conversation avec l'Assistant avec son identité associée à son compte Google.
    2. Si ce n'est pas le cas, l'utilisateur peut créer un nouveau 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 avec son nouveau compte associé.

Flux de connexion Google

Cette section décrit les différents flux qui peuvent se produire 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 intervient avec les GSI lorsque le les informations sur 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 logique personnalisée. Cette scène demande à l’utilisateur l’autorisation de accéder aux informations de son profil Google.

Lorsque l'utilisateur donne son consentement, l'Assistant envoie une requête contenant le informations de profil pour user@gmail.com. Dans ce cas, les informations contenu dans le jeton d'ID Google pour user@gmail.com correspond à un compte du domaine votre système, de sorte que l'identité de l'utilisateur dans votre action soit automatiquement associée à ce compte. Votre webhook peut alors lire la commande habituelle de l'utilisateur depuis dans une base de données et répondre en conséquence.

Processus 2: Les informations sur l'utilisateur n'existent pas 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 n'existent pas dans votre système:

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

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

Dans ce cas, l'utilisateur n'a pas de commande habituelle, car il est nouveau sur le service, donc votre action demande ce qu'elle veut commander. Toi peut également demander à l'utilisateur s'il souhaite définir sa commande la plus récente dans l'ordre habituel.