Guide d'association avec Google Sign-In "Simplifié"

Le type d'association Google Sign-In "Simplifié" ajoute l'authentification Google Sign-In en plus de l'association de compte OAuth. Si vous utilisez ce type d'association dans votre action, le flux commence par Google Sign-In, qui vous permet de vérifier si les informations de profil Google de l'utilisateur existent dans votre système. Dans le cas contraire, un flux OAuth standard commence. En combinant ces deux types d'associations, vos utilisateurs peuvent associer leur identité dans votre action avec un compte Google ou autre. S'il le souhaite, il peut également créer un compte avec les informations de son profil Google.

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

  • Une action s'étend sur plusieurs plates-formes (par exemple, si elle fonctionne avec une application Android).
  • Vous disposez déjà d'un système d'authentification et vous souhaitez autoriser les utilisateurs à associer leurs identités à des comptes autres que Google. Par exemple, si vous proposez un programme de fidélité et souhaitez vous assurer que l'utilisateur ne perd pas les points accumulés dans son compte existant.

Pour vérifier que l'association simplifiée est la solution qui vous convient, consultez la page Choisir le type d'association de votre compte.

Termes clés

Avant de découvrir le fonctionnement de l'association simplifiée, 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 (son nom, son adresse e-mail et sa 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 un utilisateur validé est attribué à la session en cours.

  • user.accountLinkingStatus:propriété définie par le système pour indiquer si 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 le flux de confirmation pour l'association du compte et peut être personnalisée pour s'adapter à des cas d'utilisation spécifiques.

  • Flux de code d'autorisation:flux OAuth 2.0 que vous pouvez implémenter avec une association simplifiée. Ce flux nécessite deux points de terminaison:

    • Point de terminaison de l'autorisation:point de terminaison qui présente l'interface de connexion aux utilisateurs qui ne sont pas déjà connectés. Il enregistre l'autorisation demandée sous la forme d'un code d'autorisation de courte durée.
    • Point de terminaison d'échange de jetons:ce point de terminaison est responsable de deux types d'échanges :
      1. Échange un code d'autorisation contre un jeton d'actualisation de longue durée et un jeton d'accès de courte durée. Cet échange se produit lorsque l'utilisateur suit la procédure d'association de comptes.
      2. Échange un jeton d'actualisation de longue durée contre un jeton d'accès de courte durée. Cet échange se produit lorsque Google a besoin d'un nouveau jeton d'accès, car il a expiré.
  • Flux de code implicite:flux OAuth 2.0 que vous pouvez implémenter avec une association simplifiée. Ce flux ne nécessite qu'un point de terminaison d'autorisation. Au cours de ce processus, Google ouvre votre point de terminaison d'autorisation dans le navigateur de l'utilisateur. Si la connexion aboutit, vous renvoyez un jeton d'accès de longue durée à Google. Ce jeton d'accès est désormais inclus dans chaque requête envoyée à l'Assistant depuis votre Assistant.

  • Jeton d'accès:un jeton qui autorise votre service à accéder à certaines parties des données d'un utilisateur. Les jetons d'accès sont associés à chaque utilisateur individuel.

  • Jeton d'actualisation:jeton échangé contre un nouveau jeton d'accès après son expiration.

Prérequis

Pour utiliser le type d'association simplifiée, vous avez besoin des éléments suivants:

  • Un serveur OAuth 2.0
  • Un point de terminaison d'échange de jetons

    Le point de terminaison d'échange de jetons doit être étendu pour permettre l'utilisation de protocoles d'association et de création de compte automatiques par Google à partir d'un jeton d'identification (autrement dit, ajouter les paramètres intent=get et intent=create dans les requêtes envoyées à ce point de terminaison).

Fonctionnement

Cette section décrit le flux général des associations simplifiées. La section suivante, Flux d'association simplifiés, décrit les différents flux pouvant se produire en fonction a) de l'activation ou de la désactivation de la création de compte par commande vocale et de b) que vous utilisiez le flux de code implicite ou d'autorisation.

Le flux fondamental 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 contenant les informations de profil Google de l'utilisateur.
  3. Vous devez valider et décoder le jeton pour lire le contenu du profil.
  4. Votre action utilise ce jeton pour vérifier si les informations de profil Google de l'utilisateur 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, et l'Assistant associe son identité à son compte Google. L'utilisateur peut poursuivre la conversation avec l'Assistant en associant son compte.
    2. Si ce n'est pas le cas, passez à l'étape 5.
  5. L'utilisateur peut a) créer un compte avec les informations de son profil Google ou b) se connecter à votre système avec un autre compte. Les options proposées à l'utilisateur varient selon que vous activez ou désactivez la création de compte par commande vocale. Si l'utilisateur choisit de se connecter au système avec un autre compte, le flux OAuth standard commence.
  6. Une fois que l'utilisateur a créé un compte ou s'est connecté avec un autre fournisseur, votre service renvoie un jeton d'accès à Google. (Si vous utilisez le flux de code d'autorisation, votre service renvoie également un jeton d'actualisation.)
  7. L'utilisateur peut désormais poursuivre la conversation avec l'Assistant en associant son compte.

Flux d'association simplifiés

Cette section décrit les différents flux pouvant se produire avec l'association simplifiée. Ces diagrammes décrivent les flux qui surviennent avec le flux de code d'autorisation plutôt que le flux de code implicite et supposent que vous utilisez Actions Builder.

Chaque flux contient les étapes suivantes une fois que l'utilisateur a appelé votre action:

Dans le flux ci-dessus, vous passez à la scène du système d'association de comptes et fournissez une justification personnalisée. La 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.

Les flux après ce point varient selon que vous configurez ou non l'association de compte par commande vocale et selon que les informations de l'utilisateur existent déjà dans votre système. Chacun de ces flux est décrit dans les sections suivantes.

Flux pour lesquels la création de compte vocal est activée

Cette section détaille les flux d'association de comptes qui peuvent se produire si vous activez la création vocale de compte.

Flux 1: les informations sur l'utilisateur existent dans votre système

Dans ce cas, l'utilisateur représenté par user@gmail.com existe dans votre backend. Par conséquent, le point de terminaison d'échange de jetons renvoie un jeton pour l'utilisateur. L'identité de l'utilisateur dans votre action est désormais associée à son compte Google. La requête d'origine de l'utilisateur (Commander ma commande habituelle) correspond à l'intent de l'utilisateur order_drink.. Votre webhook gère ensuite le traitement de l'intent correspondant et interroge votre base de données pour connaître la commande habituelle de user@gmail.com. L'utilisateur peut alors poursuivre la conversation avec l'Assistant.

Flux 2: les informations de l'utilisateur n'existent pas et l'utilisateur crée le compte

Comme vous avez activé la création de compte par commande vocale et que user@gmail.com n'existe pas dans votre backend, l'Assistant demande à l'utilisateur s'il souhaite effectuer l'une des opérations suivantes:

a) Créer un compte sur votre système à l'aide de ses informations de profil Google

b) Connectez-vous à votre système avec un autre compte

Dans ce cas, l'utilisateur choisit de créer un compte par commande vocale. Google appelle le point de terminaison d'échange de jetons de votre service avec une requête de création de compte. Cette requête contient le jeton d'ID Google, qui inclut les composants nécessaires à la création d'un compte. Vous pouvez ensuite utiliser les informations de ce jeton (le nom et l'adresse e-mail de l'utilisateur) pour créer un compte.

Une fois le compte créé, votre service renvoie un jeton d'accès et un jeton d'actualisation pour le compte nouvellement créé. L'identité de l'utilisateur dans votre action est désormais associée à son compte Google. La requête d'origine de l'utilisateur (Commander ma commande habituelle) correspond à l'intent de l'utilisateur order_drink.. Votre webhook gère ensuite le traitement de l'intent correspondant et interroge votre base de données pour connaître la commande habituelle de user@gmail.com, qui n'existe pas encore, car l'utilisateur est nouveau. Votre action peut ensuite demander à l'utilisateur ce qu'il souhaite commander.

Flux 3: les informations de l'utilisateur n'existent pas et l'utilisateur se connecte avec un autre compte

Vous avez activé la création de compte par commande vocale. L'Assistant demande donc à l'utilisateur s'il souhaite effectuer l'une des opérations suivantes:

a) Créer un compte sur votre système à l'aide de ses informations de profil Google

b) Connectez-vous à votre système avec un autre compte

Dans ce cas, l'utilisateur choisit de se connecter avec un autre compte, ce qui lance le parcours OAuth standard. Si le flux a commencé sur un appareil à commande vocale uniquement, Google transfère l'exécution sur un téléphone. Google ouvre ensuite votre point de terminaison d'autorisation dans le navigateur de l'utilisateur. Selon votre configuration, l'utilisateur peut choisir a) de se connecter à votre service avec un compte existant qui n'utilise pas Google Sign-In ou b) de créer un compte avec un autre fournisseur. Pour en savoir plus sur le flux OAuth, consultez le guide sur les concepts d'association OAuth.

Une fois les identifiants de l'utilisateur vérifiés, votre service renvoie un jeton d'accès et un jeton d'actualisation à Google. L'identité de l'utilisateur dans votre action est désormais associée à un compte autre que Google. La requête d'origine de l'utilisateur (Order my common) est mise en correspondance avec l'intent de l'utilisateur order_drink.. Votre webhook gère ensuite le traitement de l'intent correspondant et interroge votre base de données pour connaître la commande user@gmail.com habituelle, qui n'existe pas encore, car l'utilisateur est nouveau. Votre action peut ensuite demander à l'utilisateur ce qu'il souhaite commander ou lui demander de configurer sa commande habituelle.

Flux avec création de compte vocal désactivée

Cette section détaille le flux d'association de comptes qui peut se produire si vous désactivez la création de comptes par commande vocale.

Flux 4: les informations sur l'utilisateur n'existent pas

Vous n'avez pas activé la création de compte par commande vocale et l'utilisateur n'existe pas dans votre backend. Le flux OAuth standard commence donc. L'Assistant ouvre votre point de terminaison d'autorisation dans le navigateur de l'utilisateur (si le flux a commencé sur un appareil vocal uniquement, Google transfère l'exécution sur un appareil avec un écran). L'utilisateur peut choisir a) de se connecter avec un autre fournisseur, s'il s'est inscrit à votre service avec un autre compte, ou b) un nouveau compte avec un autre fournisseur. Pour en savoir plus sur le flux OAuth, consultez le guide sur les concepts d'association OAuth.

Une fois les identifiants de l'utilisateur vérifiés, votre service renvoie un jeton d'accès et un jeton d'actualisation à Google. L'identité de l'utilisateur dans votre action est désormais associée à un compte autre que Google. La requête d'origine de l'utilisateur (Order my common) est mise en correspondance avec l'intent de l'utilisateur order_drink.. Votre webhook gère ensuite le traitement de l'intent correspondant et interroge votre base de données pour connaître la commande user@gmail.com habituelle, qui n'existe pas encore, car l'utilisateur est nouveau. Votre action peut ensuite demander à l'utilisateur de configurer sa commande habituelle.