Guide conceptuel sur les associations Google Sign-In basées sur OAuth

La fonctionnalité Google Sign-In basée sur OAuth "simplifiée" type d'association ajoute Google Sign-In Association de comptes par OAuth Si vous utilisez ce type d'association dans votre action, commence par Google Sign-In, qui vous permet de vérifier si le compte Google informations de profil existent dans votre système. Dans le cas contraire, un flux OAuth standard commence. En combinant ces deux types d'association, vos utilisateurs peuvent associer leur identité dans votre action, qu'il s'agisse d'un compte Google ou autre. Si de leur choix, ils peuvent aussi créer un compte avec leur profil Google des informations.

L'association simplifiée est la solution d'association de compte recommandée si l'une les conditions suivantes s'appliquent:

  • Votre action couvre plusieurs plates-formes (par exemple, si votre avec une application Android).
  • Vous disposez d'un système d'authentification existant 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 que vous voulez vous assurer que l'utilisateur ne perdra pas points accumulés sur son compte existant.

Pour vérifier que l'association simplifiée 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 liens simplifiés, 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.

  • Flux avec code d'autorisation:flux OAuth 2.0 que vous pouvez implémenter avec 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 utilisateur de connexion. auprès des utilisateurs qui ne sont pas déjà connectés. Il enregistre le consentement demandé l'accès 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: <ph type="x-smartling-placeholder">
        </ph>
      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 passe par le flux d'association de comptes.
      2. Échange un jeton d'actualisation de longue durée contre un accès de courte durée à partir d'un jeton d'accès. Cet échange se produit lorsque Google a besoin d'un nouveau jeton d'accès car celle-ci avait expiré.
  • Flux de code implicite:flux OAuth 2.0 que vous pouvez implémenter à l'aide de Association simplifiée Ce flux ne nécessite qu'un point de terminaison d'autorisation. Au cours de ce flux, Google ouvre votre point de terminaison d'autorisation dans le navigateur. 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 depuis Assistant à votre action.

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

  • Jeton d'actualisation:jeton échangé contre un nouveau jeton d'accès Le jeton d'accès de courte durée a expiré.

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 de l'échange de jetons doit être étendu pour permettre l'utilisation protocoles d'association automatique et de création de compte à partir d'un jeton d'ID Autrement dit, ajoutez les paramètres intent=get et intent=create dans les requêtes pour ce point de terminaison).

Fonctionnement

Cette section décrit le processus général d'association simplifiée. La section suivante, Simplification des flux d'association, décrit les différents flux qui peuvent se produire selon a) si vous activez ou désactivez la création de compte par commande vocale et b) que vous utilisiez le mode implicite ou via le flux avec code d'autorisation.

Le flux de base 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. Vous devez valider et décoder le jeton pour lire le contenu du profil.
  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, et l'Assistant associe l'identité de l'utilisateur à son compte Google. L'utilisateur peut poursuivre la conversation avec Assistant avec son compte associé.
    2. Si ce n'est pas le cas, reportez-vous à l'étape 5.
  5. L'utilisateur peut a) créer un compte avec son profil Google. ou b) vous connecter à votre système avec un autre compte. La les options qui s'affichent à l'utilisateur diffèrent selon que vous activez ou non désactiver la création de compte par commande vocale. Si l'utilisateur choisit de se connecter à votre 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 les flux de code d'autorisation, votre service renvoie également un jeton d'actualisation.)
  7. L'utilisateur peut maintenant poursuivre la conversation avec l'Assistant avec son compte associé.

Flux d'association simplifiés

Cette section présente les différents flux qui peuvent se produire avec l'association simplifiée. Ces schémas présentent les flux qui se produisent avec le flux Code d'autorisation. au lieu du flux de code implicite et supposons que vous utilisez Actions Builder.

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

Dans la procédure ci-dessus, vous passez à la scène du système d'association de comptes et fournissez une logique personnalisée. La scène demande à l’utilisateur l’autorisation d’accéder les informations de son profil Google. Lorsque l'utilisateur donne son consentement, l'Assistant envoie Une requête contenant les informations de profil pour user@gmail.com.

Les flux suivants varient selon que vous configurez ou non l'association à la voix et si les informations de l'utilisateur existent déjà dans votre du système d'exploitation. Chacun de ces flux est décrit dans les sections suivantes.

Flux avec création de compte vocal activée

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

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

Dans ce cas, l'utilisateur représenté par user@gmail.com existe dans votre backend. Votre point de terminaison d'échange de jetons renvoie donc un jeton pour l'utilisateur. L'utilisateur dans votre action est désormais associée à son compte Google. L'utilisateur la requête d'origine ("Commander mon habitude") correspond à l'intention de l'utilisateur order_drink.. Votre webhook gère ensuite le traitement de l'intent mis en correspondance et interroge votre base de données pour l'ordre habituel de user@gmail.com. L'utilisateur peut alors poursuivre son conversation avec l'Assistant.

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

Parce que vous avez activé la création de compte par commande vocale et que user@gmail.com ne le fait pas existent dans votre backend, l'Assistant demande à l'utilisateur s'il souhaite l'une des options suivantes:

a) Créez un compte dans votre système à l'aide des informations de son profil Google. qui se fait par la voix

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

Dans ce cas, l'utilisateur choisit de créer un compte par commande vocale. Appels Google 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 pour créer un compte. Vous pouvez ensuite utiliser les informations de ce jeton (nom et adresse e-mail de l'utilisateur) afin de lui créer un compte.

Une fois le compte créé, votre service renvoie un jeton d'accès et actualise pour le nouveau compte. L'identité de l'utilisateur dans votre action est désormais associé à son compte Google. La demande initiale 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 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.

Processus 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 elle souhaite effectuer l'une des opérations suivantes:

a) Créez un compte dans votre système à l'aide des informations de son profil Google. qui se fait par la voix

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

Dans ce cas, l'utilisateur choisit de se connecter avec un autre compte, lance le flux OAuth standard. Si le flux a commencé sur un appareil à voix seule, 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 et, en fonction de vos l'utilisateur peut choisir de a) se connecter à votre service avec Un compte existant qui n'utilise pas Google Sign-In ou b) créer un compte à l'aide d'un autre fournisseur. Pour en savoir plus sur le flux OAuth, consultez la Guide sur le concept d'association OAuth

Après avoir vérifié les identifiants de l'utilisateur, 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 demande initiale de l'utilisateur (Commander mon habitude) correspond l'intent de l'utilisateur order_drink.. Votre webhook gère ensuite le fulfillment des l'intent correspondant et interroge votre base de données pour connaître l'ordre habituel de user@gmail.com, qui n'existe pas encore, car l'utilisateur est nouveau. Votre action peut alors 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 d'un compte par commande vocale.

Processus 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 pour que le flux OAuth standard commence. L'Assistant ouvre votre le point de terminaison d'autorisation dans le navigateur de l'utilisateur (si le flux a commencé sur appareil, Google transfère l'exécution sur un appareil doté d'un écran). L'utilisateur peut choisissez de : a) se connecter avec un autre fournisseur, s'il est inscrit sur service avec un autre compte ou b) créer un compte avec un un autre fournisseur. Pour en savoir plus sur le flux OAuth, consultez la Guide sur le concept d'association OAuth

Après avoir vérifié les identifiants de l'utilisateur, 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 demande initiale de l'utilisateur (Commander mon habitude) correspond l'intent de l'utilisateur order_drink.. Votre webhook gère ensuite le fulfillment des l'intent correspondant et interroge votre base de données pour connaître l'ordre habituel de user@gmail.com, qui n'existe pas encore, car l'utilisateur est nouveau. Votre action peut alors demander à pour configurer sa commande habituelle.