Publicado por Silvano Luciani, ingeniero de Programas de desarrolladores del Asistente de Google.
A partir de hoy, el Acceso con Google para el Asistente dejará de ofrecerse solo en versión preliminar para desarrolladores y pasará a estar generalmente disponible. Esto significa que ahora puedes brindar una experiencia continua de acceso a tus usuarios en tus Actions. Este es un tipo de vinculación de cuentas nuevo que resulta fácil de implementar y ofrece una gran experiencia a tus usuarios.
En esta entrada de blog, abordaré las diferentes opciones de vinculación de cuentas que Actions on Google ofrece y abarcaré algunos aspectos que debes considerar para cada una de ellas. Para obtener más detalles sobre cada uno de los flujos, consulta los documentos actualizados sobre vinculación de cuentas en developers.google.com/actions/identity.
Antes de entrar en detalles, también te recomendaré ver la charla que dieron Adam Dawes (gerente de producto de Identity de Google) y quien les habla en Google I/O 2018: Personalizar Actions en el Asistente de Google. Es un buen punto de partida para conocer por qué es importante personalizar tus Actions, qué opciones se ofrecen en Actions on Google y cómo se adecua la vinculación de cuentas al historial de personalización.
¿Qué es la vinculación de cuentas?
Con la vinculación de cuentas, tu Action puede fácilmente volver a darles la bienvenida a los usuarios a través de sus nombres, y compartir identidades con versiones de tu app en otras plataformas.
Puedes usar una vinculación de cuentas para solicitar al usuario que permita a tu Action acceder a sus datos de perfil, como el correo electrónico y el ID único de Google. Puedes usar el correo electrónico o el ID de Google para asociar los datos específicos de tu Action con el usuario. Por ejemplo, si tu Action ofrece un catálogo de podcasts, puedes usar la vinculación de cuentas para guardar las estaciones de radio o los géneros favoritos del usuario en tu base de datos usando el correo electrónico de la cuenta como una clave.
Hay dos casos principales que deben considerarse al determinar el tipo de vinculación de cuentas que se implementará:
Si tu Action se encuentra disponible solo en el Asistente y no tiene complementos en otras plataformas (por ejemplo, un sitio web o una Android App a los que tus usuarios pueden acceder).
Si tu Action tiene complementos en otras plataformas y deseas mantener un estado asociado con el usuario en las diferentes plataformas.
Si te adecuas al primer caso de uso, Acceso con Google es la mejor opción de vinculación de cuentas para ti. Si te adecuas al segundo, OAuth y Acceso con Google son juntas la mejor opción de vinculación de cuentas. Veamos la razón de forma más detallada.
Vinculación de cuentas con Acceso con Google
Con Acceso con Google, una vez que el usuario dé su consentimiento para compartir su perfil con tu Action, Google te enviará un token de ID que contendrá datos de la cuenta de Google del usuario con cada solicitud posterior. El ID de token es un token web JSON que se firma desde Google; una vez que verifiques y decodifiques el token, su contenido tendrá el siguiente aspecto:
La primera vez que el usuario complete el flujo de vinculación de cuentas, podrás usar el correo electrónico del usuario o el ID único de la cuenta de Google para hacer lo siguiente:
Encontrar una coincidencia en la base de datos de tu usuario si ya ha usado tu Action y vinculado su cuenta.
Crear una cuenta nueva usando información del perfil de Google.
En líneas generales, este flujo es mi favorito por las siguientes razones:
Es muy fácil de implementar. Lo único que debes hacer es agregar el código para iniciar el flujo, y para verificar y decodificar el token de ID. Puedes encontrar instrucciones sobre cómo verificar y decodificar un token de ID con nuestras bibliotecas de clientes aquí.
Estogarantiza la finalización del flujo por voz. Todos los pasos del flujo se pueden finalizar por voz sin necesidad de solicitar al usuario que interactúe con una pantalla (por ejemplo, no es necesario que acceda a tu sitio web de autenticación). Esto reduce enormemente la fricción y puede aumentar el índice de conversión para el inicio de sesión para tus Actions.
Tal vez te preguntes: “Si es tan sencillo y bueno, ¿por qué no usarlo todo el tiempo?” Ten en cuenta el siguiente escenario: tu Action permite a los usuarios realizar pedidos en tu cafetería diciendo, por ejemplo, “pedir mi favorito”. También tienes un programa de fidelidad que les permite juntar puntos por cada pedido que realicen y recibir bebidas gratuitas al alcanzar una cantidad determinada.
Si soy usuario y accedí a tu app de Android usando un correo electrónico personal como “silvano@luciani.com” en lugar de mi cuenta de Google y luego usé Acceso con Google en tu Action, no podré vincular mi cuenta existente. Esto significa que no podré acceder a preferencias que haya establecido, como mis bebidas favoritas o mis puntos de fidelidad acumulados. Ingresa a OAuth y a Acceso con Google.
Vinculación de cuentas con OAuth y Acceso con Google
Con OAuth y Acceso con Google, agregas vinculación de cuentas en base a OAuth a modo de reserva, para esos casos en que quieras realizar la vinculación con una cuenta existente no basada en Google. OAuth es el estándar de la industria para autorizaciones y te permite redireccionar el usuario del Asistente a tu sitio web de autorización, donde el usuario puede iniciar sesión usando la cuenta que no pertenezca a Google.
Cuando usas este tipo de vinculación de cuentas, una vez que el usuario da su consentimiento para el acceso a su perfil de Google, este último envía una solicitud a uno de tus puntos finales (el de cambio de token) para verificar si el usuario de Google ya existe en tu sistema de autenticación. Sino, puedes redireccionar al usuario a tu sitio web de autorización y completar un flujo estándar de OAuth.
Si bien esto soluciona el problema de vinculación de una cuenta que no pertenece a Google, hay algunos puntos en contra que deben considerarse.
Necesitas tener una implementación funcional de un servidor de OAuth que también admita las extensiones de Google para el protocolo. Definitivamente, esto es más trabajo del que se requiere para el flujo de Google Sign-In.
Para completar el flujo estándar de OAuth se necesita una pantalla. Esto significa que un usuario que comenzó la interacción con tu Action mediante voz debe recibir una transferencia a la vía telefónica, lo cual aumenta la fricción y puede reducir el índice de conversión de inicio de sesión.
Vinculación de cuentas con OAuth
Por último, puedes usar la vinculación de cuentas en base a OAuth2 tradicional. Sin embargo, con la opción de usar Acceso con Google, o este y OAuth juntos, no hay mucho incentivo para hacerlo. Este flujo requiere el trabajo adicional de establecer una implementación de trabajo de un servidor de OAuth2 y también una transferencia de la interacción con un usuario a una pantalla; esto, como ya se mencionó, puede aumentar la fricción y reducir tu índice de conversión de acceso.
Es posible que, de todos modos, consideres usar este flujo si ya tienes una implementación de trabajo de un servidor de OAuth y no puedes extenderla a fin de agregar compatibilidad para las extensiones de propiedad de Google que se solicitan para el tipo de OAuth y Google Sign-In.
¡Agrega la vinculación de cuentas a tus Actions!
En resumen, la vinculación de cuentas es una excelente manera de proveer Actions personalizadas, que a su vez proveerán una experiencia del usuario mucho mejor. El nuevo flujo de Google Sign-In disminuye de manera significativa la complejidad de la vinculación de cuentas para tus Actions, y ahora puedes aprovechar las ventajas de la vinculación de cuentas con un esfuerzo mínimo cuando uses Acceso con Google.
Consulta nuestros documentos de vinculación de cuentas nuevas, prueba nuestro nuevo ejemplo de Google Sign-In
y danos tu opinión sobre la solución y los documentos nuevos en nuestra comunidad de G+. Si tienes preguntas técnicas sobre la implementación de la vinculación de cuentas, no dudes en publicarlas en Stack Overflow.
¡Diviértete personalizando tus Actions con la vinculación de cuentas!