Monetiza tu extensión de Chrome con autenticación OpenID Connect (OAuth 2.0)
Aprende a monetizar tu extensión de Chrome agregando autenticación de usuario a esta.
Aprende a monetizar tu extensión de Chrome agregando autenticación de usuario a esta.
Las extensiones de Chrome son una gran manera de extender la funcionalidad del navegador Chrome. Cuando tienes una extensión popular, podrías querer monetizarla ofreciendo funciones profesionales a los usuarios que paguen por ellas. La autenticación de usuario es imprescindible para este propósito:
Por otro lado, no queremos quedarnos atados al sistema de cuentas de Google, ya que tus usuarios podrían preferir usar otras cuentas, o podrías tener múltiples servicios con los que quieras integrar el mismo sistema de identidad.
Un resumen rápido de los beneficios de usar OpenID Connect (OIDC) para la autenticación:
En este tutorial, usaremos Logto como el proveedor de OIDC, que es una alternativa a Auth0 para construir infraestructuras de identidad.
¡Vamos a empezar!
Asumiendo que colocaste un botón de "Iniciar sesión" en el popup de tu extensión de Chrome, el flujo de autenticación se verá así:
Para otras páginas interactivas en tu extensión, solo necesitas reemplazar al participante Popup de extensión con el nombre de la página. En este tutorial, nos centraremos en la página del popup.
Para comenzar, crea una aplicación Logto con el tipo "Aplicación de una sola página". Sigue estos pasos para crear una aplicación Logto:
Instala Logto SDK en el proyecto de tu extensión de Chrome:
manifest.jsonLogto SDK requiere los siguientes permisos en el manifest.json:
permissions.identity: Requerido para la API de Identidad de Chrome, que se usa para iniciar y cerrar sesión.permissions.storage: Requerido para almacenar la sesión del usuario.host_permissions: Requerido para que el SDK de Logto comunique con las API de Logto.En el script de fondo de tu extensión de Chrome, inicializa el Logto SDK:
Reemplaza <tu-endpoint-logto> y <tu-id-aplicación-logto> con los valores reales. Puedes encontrar estos valores en la página de la aplicación que acabas de crear en la Consola de Logto.
Si no tienes un script de fondo, puedes seguir la guía oficial para crear uno.
Luego, necesitamos escuchar el mensaje de otras páginas de extensión y manejar el proceso de autenticación:
Es posible que notes que se usan dos URIs de redirección en el código anterior. Ambas son creadas por chrome.identity.getRedirectURL, que es una API integrada de Chrome para generar una URL de redirección para los flujos de autenticación. Las dos URIs serán:
https://<id-extensión>.chromiumapp.org/callback para iniciar sesión.https://<id-extensión>.chromiumapp.org/ para cerrar sesión.Ten en cuenta que estas URIs no son accesibles, y solo son usadas para que Chrome desencadene acciones específicas para el proceso de autenticación.
Ahora necesitamos actualizar la configuración de la aplicación Logto para permitir las URIs de redirección que acabamos de crear.
https://<id-extensión>.chromiumapp.org/callback.https://<id-extensión>.chromiumapp.org/.chrome-extension://<id-extensión>. El SDK en la extensión de Chrome usará este origen para comunicarse con las API de Logto.Recuerda reemplazar <id-extensión> con tu ID real de extensión. Puedes encontrar el ID de la extensión en la página chrome://extensions.
Después de actualizar la configuración, tu configuración de aplicación Logto debería verse así:

¡Ya casi terminamos! Vamos a agregar los botones de iniciar y cerrar sesión y la otra lógica necesaria a la página del popup.
En el archivo popup.html:
En el archivo popup.js (asumiendo que popup.js está incluido en el popup.html):
Ahora puedes probar el flujo de autenticación en tu extensión de Chrome:
Dado que Chrome proporciona APIs de almacenamiento unificadas, además del flujo de iniciar y cerrar sesión, todos los demás métodos de Logto SDK se pueden usar directamente en la página del popup.
En tu popup.js, puedes reutilizar la instancia de LogtoClient creada en el script de fondo, o crear una nueva con la misma configuración:
Luego puedes crear una función para cargar el estado de autenticación y el perfil del usuario:
También puedes combinar la función loadAuthenticationState con la lógica de iniciar y cerrar sesión:
Aquí hay un ejemplo de la página del popup con el estado de autenticación:

Para más información sobre el SDK, puedes consultar la documentación oficial del SDK de navegador. El SDK de navegador comparte las mismas APIs con el SDK de extensión de Chrome.
browser o similar para evitar el empaquetado innecesario de módulos de Node.js.Consulta nuestro proyecto de ejemplo para un ejemplo completo con TypeScript, Rollup y otras configuraciones.
Con los usuarios autenticados, ahora puedes ofrecer de manera segura funciones pagadas en tu extensión de Chrome. Por ejemplo, puedes almacenar el estado de suscripción del usuario en su perfil y verificarlo cuando el usuario abre la extensión.
Combinando el poder de las extensiones de Chrome y Logto, puedes construir una extensión más flexible y personalizable que tanto tú como tus usuarios amarán.