Guía de conceptos de Acceso con Google

El Acceso con Google (GSI) para Asistente proporciona la experiencia de vinculación más fluida a los usuarios y es el flujo más fácil de implementar para los desarrolladores. Con la GSI, tu Acción puede solicitar acceso al perfil de Google de tu usuario durante una conversación y, si el usuario da su consentimiento, recibir su nombre, dirección de correo electrónico y foto de perfil. La Acción puede usar esta información para verificar si el usuario tiene una Cuenta de Google en tu sistema. De lo contrario, tu Acción le preguntará al usuario si desea crear una cuenta nueva en tu sistema en función de la información de su perfil de Google.

La GSI es la solución de vinculación de cuentas recomendada si se aplica alguna de las siguientes condiciones:

  • No tienes un sistema de autenticación existente o esperas que todos tus usuarios tengan una Cuenta de Google. Por ejemplo, si tu Acción está orientada específicamente a Asistente, puedes esperar que todos tus usuarios tengan Cuentas de Google.
  • Tienes un sistema de autenticación existente y solo deseas vincular a los usuarios que accedieron a tu sistema con sus Cuentas de Google.

Para verificar que la GSI sea la solución adecuada para ti, consulta la página Elige tu tipo de vinculación de cuenta.

Términos clave

Antes de leer sobre el funcionamiento de las GSI, familiarízate con las siguientes condiciones:

  • Token de ID de Google: es una aserción firmada de la identidad de un usuario que contiene la información básica de perfil de Google de este (su nombre, dirección de correo electrónico y foto de perfil). Un token de ID de Google es un token web JSON (JWT).

    El siguiente es un ejemplo de un token decodificado:

{
  "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: Es una propiedad que establece el sistema para indicar si la sesión actual tiene un usuario verificado.

  • user.accountLinkingStatus: Es una propiedad que establece el sistema para indicar si el usuario de la sesión actual tiene una identidad vinculada.

  • Escena del sistema de vinculación de cuentas: Es una escena predefinida que implementa el flujo de confirmación para la vinculación de cuentas y se puede personalizar para adaptarla a casos de uso específicos.

Cómo funciona

El flujo fundamental de GSI es el siguiente:

  1. Tu Acción le solicita al usuario el consentimiento para acceder a su perfil de Google.
  2. Una vez que el usuario da su consentimiento, tu Acción recibe un token de ID de Google que contiene la información de perfil de Google del usuario.
  3. Valida y decodifica el token para leer el contenido del perfil. Si usas la biblioteca de entregas de Actions on Google para Node.js, esta valida y decodifica el token por ti.
  4. Tu Acción usa este token para verificar si la información de perfil de Google del usuario existe en tu sistema.

    1. Si lo hace, el usuario ya accedió al sistema con su Cuenta de Google. El usuario puede continuar la conversación con Asistente con su identidad vinculada a su Cuenta de Google.
    2. De lo contrario, el usuario puede crear una cuenta nueva en tu sistema con la información contenida en el token de ID de Google. El usuario puede continuar la conversación con Asistente con su nueva cuenta vinculada.

Flujos de Acceso con Google

En esta sección, se describen los diversos flujos que pueden ocurrir con el Acceso con Google.

Flujo 1: La información del usuario existe en tu sistema

En el siguiente diagrama, se muestra el flujo de extremo a extremo que ocurre con la GSI cuando la información del usuario ya existe en tu sistema:

En este caso, debes hacer la transición a la escena del sistema de vinculación de cuentas y proporcionar una lógica personalizada. En esta escena, se le solicita permiso al usuario para acceder a la información de su perfil de Google.

Una vez que el usuario otorga su consentimiento, Asistente envía una solicitud que contiene la información de perfil de user@gmail.com. En este caso, la información que contiene el token de ID de Google para user@gmail.com coincide con una cuenta de tu sistema, por lo que la identidad del usuario en tu Acción se vincula automáticamente a esa cuenta. El webhook puede leer el pedido habitual del usuario desde una base de datos y responder según corresponda.

Flujo 2: La información del usuario no existe en tu sistema

En el siguiente diagrama, se muestra el flujo de extremo a extremo que ocurre con la GSI cuando la información del usuario no existe en tu sistema:

En este caso, la información que contiene el token de ID de Google para user@gmail.com no coincide con una cuenta de tu sistema, por lo que Asistente le preguntará al usuario si desea crear una cuenta nueva. El usuario puede completar el proceso de creación de la cuenta con la voz en lugar de transferirlo a un dispositivo analizado.

Cuando el usuario acepta crear una cuenta, el servicio usa la información del token de ID (el nombre y la dirección de correo electrónico del usuario) para crearle una cuenta. Una vez que se crea la cuenta, la identidad del usuario en tu Acción se vincula con su nueva Cuenta de Google.

En este caso, el usuario no tiene un pedido habitual porque es nuevo en el servicio, por lo que tu Acción te pregunta qué quiere pedir. También puedes preguntarle al usuario si desea establecer su pedido más reciente como su pedido habitual.