Guía conceptual de vinculación de OAuth

El tipo de vinculación de OAuth admite dos flujos de OAuth 2.0 estándar de la industria: los flujos implícito y de código de autorización. En el flujo de código implícito, Google abre tu extremo de autorización en el navegador del usuario. Después de un acceso exitoso, muestras un token de acceso de larga duración a Google. Este token de acceso se incluye en cada solicitud que envía Asistente a tu Acción.

La vinculación de OAuth es la solución de vinculación de cuenta recomendada si se aplica lo siguiente:

  • Tienes una implementación existente de un servidor de OAuth 2.0 y no puedes extender tu extremo de intercambio de tokens a fin de agregar compatibilidad con los protocolos de Google para la vinculación automática y la creación de cuentas desde un token de ID (es decir, agregar los parámetros intent=get y intent=create en las solicitudes a este extremo).

Para verificar que la vinculación de OAuth es la solución adecuada para ti, consulta la página sobre cómo elegir tu tipo de vinculación de cuentas.

Términos clave

Antes de leer sobre el funcionamiento de la vinculación de OAuth, familiarízate con las siguientes condiciones:

  • user.verificationStatus: Es una propiedad que el sistema establece para indicar si la sesión actual tiene un usuario verificado.

  • user.accountLinkingStatus: Es una propiedad que el sistema establece 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 que se puede personalizar a fin de que se ajuste a casos de uso específicos.

  • Flujo de código de autorización: Durante este flujo de OAuth 2.0, Google abre tu extremo de autorización en el navegador del usuario. Si el acceso se realiza correctamente, tu servicio crea un código de autorización y lo devuelve a Google. Google envía este código de autorización al extremo del intercambio de tokens, que verifica la autenticidad del código y muestra un token de acceso y un token de actualización.

    Este flujo requiere dos extremos:

    • Extremo de autorización: Es el extremo responsable de buscar o solicitar el consentimiento de los usuarios para el acceso a los datos. Este extremo hace lo siguiente:
      1. Presenta la IU de acceso a los usuarios que aún no accedieron.
      2. Registra el consentimiento para el acceso solicitado en forma de un código de autorización de corta duración.
    • Extremo de intercambio de tokens: Este extremo se usa para obtener strings encriptadas, llamadas tokens, que autorizan al usuario de la acción a acceder a tu servicio. Este extremo es responsable de dos tipos de intercambios:
      1. Intercambia un código de autorización por un token de actualización de larga duración y un token de acceso de corta duración. Este intercambio se produce cuando el usuario pasa por el flujo de vinculación de cuentas.
      2. Intercambia un token de actualización de larga duración por un token de acceso de corta duración. Este intercambio se produce cuando Google necesita un token de acceso nuevo porque el que había vencido.
  • Flujo de código implícito: Durante este flujo de OAuth 2.0, Google abre tu extremo de autorización en el navegador del usuario. Si el acceso se realiza correctamente, muestras un token de acceso de larga duración a Google. Este token de acceso se incluye en cada solicitud que envía Asistente a tu acción. Este flujo solo requiere un extremo de autorización.

  • Token de acceso: Es un token que autoriza a tu servicio a acceder a partes de los datos de un usuario. Los tokens de acceso se asocian con cada usuario individual y deben ser indescifrables.

  • Token de actualización: Es un token que se intercambia por un token de acceso nuevo una vez que caducó un token de acceso de corta duración.

Cómo funciona

En esta sección, se describe el flujo general del código de autorización de OAuth y los flujos implícitos. En la siguiente sección, Flujos de vinculación de OAuth, se describen los diversos flujos que pueden ocurrir con OAuth.

El flujo del código de autorización se puede resumir de la siguiente manera:

  1. Tu acción le pregunta al usuario si quiere vincular su cuenta con tu servicio.
  2. Una vez que el usuario acepte vincular las cuentas, Google abrirá el extremo de autorización en el navegador del usuario. Si el flujo se inició en un dispositivo solo de voz para una acción, Google transferirá la ejecución a un teléfono.
  3. El usuario accede (si aún no lo ha hecho) y otorga permiso a Google para acceder a sus datos con tu API (si aún no lo ha otorgado).
  4. Tu servicio crea un código de autorización y lo muestra a Google mediante el redireccionamiento del navegador del usuario a Google con el código de autorización adjunto a la solicitud.
  5. Google envía el código de autorización al extremo del intercambio de tokens, lo que verifica la autenticidad del código y muestra un token de acceso y un token de actualización. El token de acceso es un token de corta duración que tu servicio acepta como credenciales para acceder a las API. El token de actualización es un token de larga duración que Google puede almacenar y usar para adquirir nuevos tokens de acceso cuando vencen.
  6. Una vez que el usuario completa el flujo de vinculación de cuentas, cada solicitud posterior que envía Asistente al webhook de entrega contiene un token de acceso.

El flujo de código implícito se puede resumir de la siguiente manera:

  1. Tu acción le pregunta al usuario si quiere vincular su cuenta con tu servicio.
  2. Una vez que el usuario acepte vincular las cuentas, Google abrirá el extremo de autorización en el navegador del usuario.
  3. El usuario accede (si aún no lo ha hecho) y otorga permiso a Google para acceder a sus datos con tu API (si aún no lo ha otorgado).
  4. Tu servicio crea un token de acceso y lo muestra a Google mediante el redireccionamiento del navegador del usuario a Google con el token de acceso adjunto a la solicitud.
  5. Una vez que el usuario completa el flujo de vinculación de cuentas, Google llama a las APIs de tu servicio y adjunta el token de acceso con cada solicitud. Tu servicio verifica que el token de acceso otorgue autorización a Google para acceder a la API y, luego, completa la llamada a la API.

El flujo de código de autorización fundamental es el siguiente:

  1. Tu acción le pregunta al usuario si quiere vincular su cuenta con tu servicio.
  2. Una vez que el usuario acepte vincular las cuentas, Google abrirá el extremo de autorización en el navegador del usuario. Si el flujo se inició en un dispositivo solo de voz para una acción, Google transferirá la ejecución a un teléfono.
  3. El usuario accede (si aún no lo ha hecho) y otorga permiso a Google para acceder a sus datos con tu API (si aún no lo ha otorgado).
  4. Tu servicio crea un código de autorización y lo muestra a Google mediante el redireccionamiento del navegador del usuario a Google con el código de autorización de corta duración adjunto a la solicitud.
  5. Google envía el código de autorización al extremo del intercambio de tokens, lo que verifica la autenticidad del código y muestra un token de acceso y un token de actualización. El token de acceso es un token de corta duración que tu servicio acepta como credenciales para acceder a las API. El token de actualización es un token de larga duración que Google puede almacenar y usar para adquirir nuevos tokens de acceso cuando vencen.
  6. Una vez que el usuario completa el flujo de vinculación de cuentas, cada solicitud posterior que envía Asistente al webhook de entrega contiene un token de acceso.

Flujos de vinculación de OAuth

En esta sección, se explican los diversos flujos que pueden ocurrir con la vinculación de OAuth.

Cada flujo contiene estos pasos comunes después de que el usuario invoca tu acción:

En el flujo anterior, haces la transición a la escena del sistema de vinculación de cuentas y proporcionas una justificación personalizada. Asistente le pregunta al usuario si quiere vincular su cuenta con tu servicio y le muestra una pantalla con los permisos solicitados. Cuando el usuario otorga su consentimiento, Google lo redirecciona al extremo de autorización de tu servicio en el navegador. El usuario accede (o, según tu configuración, crea una cuenta nueva) y otorga a tu acción permiso para acceder a sus datos.

Los flujos posteriores a este punto difieren en función de si implementaste o no el flujo implícito o del código de autorización. Estos flujos se describen en las siguientes secciones.

Flujo 1: El usuario accede con un flujo implícito

Una vez que el usuario accede y sus credenciales están verificadas, tu servicio crea un token de acceso de larga duración y lo devuelve a Google. En este punto, la identidad del usuario en tu acción está vinculada a la cuenta con la que accedió y el token de acceso se adjunta a cada llamada a la API que realiza Google a las API de tu servicio.

Flujo 2: El usuario accede con un flujo de código de autorización

Una vez que el usuario accede y sus credenciales están verificadas, tu servicio crea un código de autorización y lo muestra a Google.

Este código de autorización se envía al extremo del intercambio de tokens, que muestra un token de acceso y un token de actualización. En este punto, la identidad del usuario en tu acción está vinculada a cualquier cuenta con la que haya accedido y cada solicitud posterior que envíe Asistente a tu entrega contiene un token de acceso.