Guide des concepts liés à OAuth et Google Sign-In (Dialogflow)

Le type d'association OAuth et Google Sign-In ajoute Google Sign-In en plus 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.

Nous vous recommandons d'utiliser OAuth et Google Sign-In pour associer vos comptes 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 la solution OAuth et Google Sign-In vous convient, consultez la Page Sélectionnez le type d'association de vos comptes.

Termes clés

Avant de découvrir le fonctionnement d'OAuth et de Google Sign-in, 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"
}
  • Intent d'assistance à la connexion au compte:intent d'assistance que vous appelez pour demander une procédure d'association de compte à partir de l'Assistant. Pour en savoir plus, consultez Connexion au compte.
    • Chaîne de contexte:chaîne personnalisée que vous ajoutez au compte un intent d'assistance à la connexion qui indique à l'utilisateur pourquoi vous souhaitez associer leur compte.
  • Flux avec code d'autorisation:flux OAuth 2.0 que vous pouvez implémenter avec OAuth + Google Sign-In. Ce flux nécessite deux points de terminaison: <ph type="x-smartling-placeholder">
      </ph>
    • 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 OAuth + Google Sign-In. 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 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 OAuth et Google Sign-In, vous avez besoin des éléments suivants:

  • Un serveur OAuth 2
  • 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 flux général d'OAuth et de Google Sign-In. La section suivante, Flux OAuth et GSI, 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 compte associé.

Flux OAuth et GSI

Cette section passe en revue les différents flux qui peuvent se produire avec OAuth et GSI. Ces schémas présentent les flux qui se produisent avec le flux Code d'autorisation. plutôt que le flux de code implicite et supposons que vous utilisez Dialogflow en tant que la solution de compréhension du langage naturel pour votre action.

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

Dans le flux ci-dessus, vous appelez l'intent d'assistance actions.intent.SIGN_IN avec une que vous personnalisez. Cet intent 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'intent personnalisé 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 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 personnalisé 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 de conception 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 personnalisé 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 de conception 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 personnalisé 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.