Configurar la autenticación en aplicaciones móviles puede ser complejo, pero combinarla con Supabase con el Capgo Plugin de inicio de sesión social hace que sea sencillo. Este tutorial te guiará a través de la integración de la autenticación social (Google, Apple, Facebook) con Supabase en tu aplicación Capacitor.
¿Por qué usar Supabase con inicio de sesión social?
Supabase proporciona un backend como servicio robusto con autenticación integrada, mientras que el @capgo/capacitor-social-login plugin ofrece autenticación social nativa en plataformas iOS, Android y web. Para una integración más estrecha de Supabase, @capgo/capacitor-supabase agrega ayudantes de autenticación nativos y acceso JWT. Juntos, proporcionan:
- Autenticación social sin problemas
- Gestión de tokens segura
- Compatibilidad entre plataformas
- Integración de base de datos en tiempo real
- Gestión de usuarios integrada
Requisitos previos
Antes de empezar, asegúrese de tener:
- Un proyecto Capacitor configurado
- Una cuenta y proyecto de Supabase
- Cuentas de desarrollador para tus proveedores sociales elegidos (Google, Apple, Facebook)
Step 1: Instale y configure el plugin de inicio de sesión social
Primero, instale el Capgo plugin de inicio de sesión social:
npm install @capgo/capacitor-social-login
npx cap sync
Consulte el Inicio de sesión social y Supabase páginas del plugin para la configuración específica de la plataforma.
Step 2: Configura el proyecto de Supabase
Crear y configurar su proyecto de Supabase
-
Crear un proyecto de Supabase:
- Vaya a supabase.com y registrarse/iniciar sesión
- Haga clic “Nuevo Proyecto”
- Elige tu organización
- Ingrese un Nombre del Proyecto (por ejemplo, “Autenticación de MyApp”)
- Establezca una Contraseña de Base de Datos (guárdela de manera segura)
- Seleccione su Región (elige la más cercana a tus usuarios)
- Click “Crear nuevo proyecto”
-
Obtén tus credenciales de proyecto:
- Una vez creado, ve a Configuración > API
- Copia tu URL de proyecto (por ejemplo,
https://your-project-ref.supabase.co) - Copia tu clave pública anónima API
- Guarda estos para usarlos más adelante en tu aplicación
Configura los ajustes de autenticación
-
Configura los ajustes de autenticación general:
- Ve a Autenticación > Ajustes
- Bajo Ajustes generales:
- Establece URL del sitio a la URL de tu aplicación (por ejemplo,
https://yourdomain.comohttp://localhost:3000context:HTML fragmento de texto de una cadena de UI de Capgo más larga (clave de mensaje `alternatives_cta_questions`). Página/área: página de comparación de alternativas de actualización en vivo de Capacitor. Rol: párrafo de marketing o legal largo. Visto en: página alternatives.astro. Preserva términos de producto y marca de Capgo y términos de desarrollador exactamente. Clave de mensaje `alternatives_cta_questions` (Preguntas de CTAs de alternativas). | Fragmento de texto de HTML de una cadena de UI de Capgo más larga (clave de mensaje `appflow_cta_questions`). Página/área: copia de marketing de comparación/migración de Appflow. Rol: párrafo de marketing o legal largo. Visto en: página ionic-appflow.astro. Preserva términos de producto y marca de Capgo y términos de desarrollador exactamente. Clave de mensaje `appflow_cta_questions` (Preguntas de CTAs de Appflow). | Fragmento de texto de HTML de una cadena de UI de Capgo más larga (clave de mensaje `capwesome_cta_questions`). Página/área: página de comparación de Capawesome. Rol: párrafo de marketing o legal largo. Visto en: página capwesome.astro. Preserva términos de producto y marca de Capgo y términos de desarrollador exactamente. Clave de mensaje `capwesome_cta_questions` (Preguntas de CTAs de Capwesome). | Fragmento de texto de HTML de una cadena de UI de Capgo más larga (clave de mensaje `consulting_faq_subtitle`). Página/área: página de servicios de consultoría. Rol: subtítulo de sección o etiqueta. Visto en: página consulting.astro. Preserva términos de producto y marca de Capgo y términos de desarrollador exactamente. Clave de mensaje `consulting_faq_subtitle` (Subtítulo de preguntas frecuentes de consultoría). | Página/área: copia de marketing de comparación/migración de Appflow. Rol: etiqueta de UI corta o elemento de navegación. Visto en: página ionic-appflow.astro, página ionic-enterprise-plugins.astro, página soluciones/ionic-enterprise-plugins.astro. Clave de mensaje `appflow_plugins_or` (Appflow Plugins o). - Agregar opciones adicionales URLs de redirección si es necesario:
http://localhost:3000 https://yourdomain.com capacitor://localhost (for mobile apps)
- Establece URL del sitio a la URL de tu aplicación (por ejemplo,
-
Configurar ajustes de correo electrónico (opcional pero recomendado):
- Bajo Configuración de SMTP, configura tu proveedor de correo electrónico
- Esto habilita las confirmaciones de correo electrónico y los restablecimientos de contraseña
- Para el desarrollo, puedes utilizar el servicio de correo electrónico integrado
Habilitar proveedores de autenticación social
- Accede a la sección de proveedores:
- Ir a Autenticación > Proveedores en tu panel de Supabase
- Verás una lista de proveedores sociales disponibles
- Cada proveedor tiene un Habilitar botón de encendido y opciones de configuración
Ahora, configuraremos cada proveedor social con detalle:
Paso 3: Configurar Proveedores Sociales en Supabase
Configuración de autenticación de Google en Supabase
Primero, obtén tus credenciales de OAuth de Google:
Sigue nuestra guía de configuración de Google completa: Configuración de autenticación de Google
Esta guía cubre:
- Crear un proyecto de Google Cloud
- Configurar credenciales OAuth 2.0 para web, iOS y Android
- Configuración de la pantalla de consentimiento
- Obtener los IDs y secretos de cliente necesarios
Después de completar la configuración de Google, configúrela en Supabase:
- Habilite el proveedor de Google en Supabase:
- En su panel de control de Supabase, vaya a Autenticación > Proveedores
- Encuentre Google y activarlo ACTIVADO
- Rellene la configuración:
- ID de cliente: Su OAuth de Google Web ID de cliente de Google (de la Consola de Cloud de Google)
- ID de cliente secreto: Su OAuth de Google Web ID de cliente secreto de Google
- URL de redireccionamiento:
https://your-project-ref.supabase.co/auth/v1/callback(auto-filled)
- Haz clic “Guardar”
Importante: Utiliza el ID del cliente web y Secret del cliente web en Supabase, incluso si estás construyendo una aplicación móvil. Los IDs de cliente móviles se utilizan por separado en la configuración del complemento.
Configuración de autenticación de Apple en Supabase
Obtén credenciales de Apple:
Sigue nuestra guía detallada de configuración de Apple: Configuración de autenticación de Apple
Esta guía cubre:
- Configuración de tu cuenta de desarrollador de Apple
- Crear IDs de aplicación y IDs de servicio
- Configuración de la capacidad de inicio de sesión con Apple
- Generación de las claves privadas requeridas
- Configuración específica de plataforma para iOS, Android y Web
Después de completar la configuración de Apple, configúrala en Supabase:
- Habilitar proveedor de Apple en Supabase:
- Ir a Autenticación > Proveedores y activar Manzana ACTIVADO
- Rellene la configuración:
- ID de cliente: Su identificador de servicio ID (por ejemplo,
com.yourapp.signin) - Secreto de cliente: Genere este JWT utilizando su clave privada de Apple (consulte documentación de Apple de Supabase para el formato de JWT)
- URL de redireccionamiento:
https://your-project-ref.supabase.co/auth/v1/callback(rellenado automáticamente)
- ID de cliente: Su identificador de servicio ID (por ejemplo,
- Haga clic “Guardar”
Nota: La configuración de autenticación de Apple es la más compleja debido a los requisitos de Apple para IDs de Servicio, claves privadas y generación de JWT. Siga nuestra documentación cuidadosamente para cada plataforma.
Configuración de autenticación de Facebook en Supabase
Obtenga credenciales de Facebook:
Siga nuestra guía de configuración de Facebook completa: Configuración de autenticación de Facebook
Este manual cubre:
- Crear una cuenta de desarrollador de Facebook y aplicación
- Agregar el producto de inicio de sesión de Facebook
- Configurar URIs de redirección de OAuth
- Obtener su ID de aplicación, secreto de aplicación y token de cliente
- Configuración específica de plataforma para iOS y Android
Después de completar la configuración de Facebook, configúralo en Supabase:
- Habilite el proveedor de Facebook en Supabase:
- Vaya a Autenticación > Proveedores y active Facebook ACTIVADO
- Rellene la configuración:
- ID de cliente: Su ID de aplicación de Facebook
- Secreto de cliente: Su clave secreta de Facebook
- URL de redirección:
https://your-project-ref.supabase.co/auth/v1/callback(rellenado automáticamente)
- Haga clic “Guardar”
ImportanteAsegúrese de agregar la URL de llamada de Supabase (https://your-project-ref.supabase.co/auth/v1/callback) a las URIs de OAuth válidas de su aplicación de Facebook. Notas importantes de configuración de Supabase Seguridad de nivel de fila (RLS):
Valid URIs de OAuth de Facebook
en la configuración de inicio de sesión de Facebook.
- Después de configurar la autenticación, habilite RLS en sus tablas
- Vaya a Base de datos > Tablas y active Habilitar RLS para cada tabla
- Crear políticas para controlar el acceso a los datos en función de usuarios autenticados
Gestión de usuarios:
- Ver usuarios autenticados en Autenticación > Usuarios
- Monitorear eventos de autenticación en Autenticación > Registros
- Configura plantillas de correo electrónico en Autenticación > Plantillas de correo electrónico
Prueba de la configuración:
- Utiliza la herramienta de prueba de autenticación integrada de Supabase
- Ve a Autenticación > Usuarios y haz clic en “Invita a un usuario” para probar los flujos de correo electrónico
- Revisa la Sección de registros context: Página/área: Capgo Builder / producto de construcción nativa en la nube. Rol: Etiqueta de UI corta o elemento de navegación. Visto en: página native-build.astro. Clave de mensaje `native_build_v2_trust_logs_lbl` (Native Build V2 Trust Logs Lbl).
Step 4: Configura el plugin de inicio de sesión social
Ahora que Supabase está configurado, debes configurar el plugin de inicio de sesión social con las credenciales correspondientes. Importante: El plugin necesita las credenciales de OAuth de los proveedores originales (no de Supabase), mientras que Supabase gestiona la autenticación en el lado del servidor. Cómo funciona el flujo de autenticación
Antes de sumergirnos en la configuración, comprende el flujo:
El plugin autentica
- con el proveedor social (Google/Apple/Facebook) de manera nativa El plugin recibe tokens
- (token de acceso, token de identidad) del proveedor El plugin autentica con el proveedor social (Google/Apple/Facebook) de manera nativa y recibe tokens (token de acceso, token de identidad) del proveedor.
- Su aplicación envía estos tokens a Supabase mediante
signInWithIdToken() - Supabase valida los tokens con el proveedor y crea una sesión de usuario
- Supabase devuelve su propio token JWT para las solicitudes autenticadas de su aplicación
Configuración del plugin de Google
El plugin necesita su ID de cliente web para todas las plataformas y opcionalmente un ID de cliente de iOS para características específicas de iOS:
import { SocialLogin } from '@capgo/capacitor-social-login';
await SocialLogin.initialize({
google: {
// Use the same Web Client ID you configured in Supabase
webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
// Optional: iOS Client ID for iOS-specific features
iOSClientId: 'YOUR_IOS_CLIENT_ID.apps.googleusercontent.com',
// Optional: Request offline access for refresh tokens
mode: 'offline'
}
});
Puntos clave para Google:
- Utilice el ID del cliente web (no los IDs de cliente de Android/iOS) para el
webClientIdcampo - El plugin funcionará en todas las plataformas con solo el ID del cliente web
- El
iOSClientIdes opcional y solo se utiliza para características específicas de Google de iOS
Configuración del plugin de Apple
La configuración de Apple difiere entre iOS y Android:
Para iOS (iniciación nativa de Apple):
await SocialLogin.initialize({
apple: {
// No additional configuration needed for iOS
// The plugin uses the native Apple Sign-In capability
}
});
For Android/Web (requiere ID de Servicio):
await SocialLogin.initialize({
apple: {
clientId: 'YOUR_SERVICE_ID', // The Service ID from Apple Developer Portal
redirectUrl: 'https://your-project-ref.supabase.co/auth/v1/callback'
}
});
Puntos clave para Apple:
- iOS utiliza el inicio de sesión nativo con Apple (no se necesita configuración adicional)
- Android/Web requiere el ID de Servicio que creaste en el Portal de Desarrolladores de Apple
- El
redirectUrldebe coincidir con lo que configuraste en el Portal de Desarrolladores de Apple y en Supabase
Configuración del plugin de Facebook
Facebook requiere su ID de aplicación y token de cliente:
await SocialLogin.initialize({
facebook: {
appId: 'YOUR_FACEBOOK_APP_ID', // From Facebook Developer Dashboard
clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN', // From Facebook Developer Dashboard
// Optional: Use Facebook Limited Login (for enhanced privacy)
limitedLogin: false // See our Facebook setup guide for important Limited Login details
}
});
Puntos clave para Facebook:
- Utiliza el mismo ID de aplicación que configuraste en Supabase
- El token de cliente se encuentra en los ajustes básicos de tu aplicación de Facebook
limitedLogin: truehabilita la característica de inicio de sesión limitado de Facebook (solo para iOS)- ImportanteVer nuestra guía de configuración de Facebook para obtener información detallada sobre el inicio de sesión limitado, incluidas consideraciones sobre ATT
Inicialice el plugin completo
Aquí está cómo inicializar todos los proveedores juntos:
import { SocialLogin } from '@capgo/capacitor-social-login';
export async function initializeSocialLogin() {
await SocialLogin.initialize({
google: {
webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
mode: 'offline'
},
facebook: {
appId: 'YOUR_FACEBOOK_APP_ID',
clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN',
},
apple: {
// iOS: no config needed
// Android/Web: uncomment the lines below
// clientId: 'YOUR_SERVICE_ID',
// redirectUrl: 'https://your-project-ref.supabase.co/auth/v1/callback'
}
});
}
Importantes notas:
- Llame
initialize()una vez cuando su aplicación comience, no antes de cada inicio de sesión - Solo necesita configurar los proveedores que planea utilizar
- Las credenciales aquí provienen de los proveedores originalesno de Supabase
- Asegúrese de que las credenciales del proveedor coincidan con lo que configuró en Supabase
Paso 5: Configuración del cliente de Supabase
Instale el cliente de Supabase:
npm install @supabase/supabase-js
Cree un servicio de Supabase:
// services/supabase.ts
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = 'https://your-project-ref.supabase.co';
const supabaseKey = 'your-anon-public-key';
export const supabase = createClient(supabaseUrl, supabaseKey, {
auth: {
autoRefreshToken: true,
persistSession: true,
detectSessionInUrl: false,
},
});
Paso 6: Implementación del flujo de autenticación
Cree un servicio de autenticación que combine ambos:
// services/auth.ts
import { SocialLogin } from '@capgo/capacitor-social-login';
import { supabase } from './supabase';
export class AuthService {
async initializeSocialLogin() {
await SocialLogin.initialize({
google: {
webClientId: 'YOUR_WEB_CLIENT_ID.apps.googleusercontent.com',
},
facebook: {
appId: 'YOUR_FACEBOOK_APP_ID',
clientToken: 'YOUR_FACEBOOK_CLIENT_TOKEN',
},
apple: {} // iOS configuration
});
}
async signInWithGoogle() {
try {
const result = await SocialLogin.login({
provider: 'google',
options: {
scopes: ['email', 'profile']
}
});
const googleResult = result.result;
if (!googleResult) {
throw new Error('Google login failed');
}
// GoogleLoginResponse is a union type - check responseType to determine flow
if (googleResult.responseType === 'online') {
// Online mode: use idToken directly with Supabase
const { data, error } = await supabase.auth.signInWithIdToken({
provider: 'google',
token: googleResult.idToken!,
});
if (error) throw error;
return data;
} else {
// Offline mode: exchange serverAuthCode on your backend
// Your backend should exchange the code for tokens and create a Supabase session
const response = await fetch('/api/auth/google', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ serverAuthCode: googleResult.serverAuthCode })
});
return response.json();
}
} catch (error) {
console.error('Google sign-in error:', error);
throw error;
}
}
async signInWithApple() {
try {
const result = await SocialLogin.login({
provider: 'apple',
options: {
scopes: ['email', 'name']
}
});
const { data, error } = await supabase.auth.signInWithIdToken({
provider: 'apple',
token: result.result?.identityToken!,
});
if (error) throw error;
return data;
} catch (error) {
console.error('Apple sign-in error:', error);
throw error;
}
}
async signInWithFacebook() {
try {
const result = await SocialLogin.login({
provider: 'facebook',
options: {
permissions: ['email', 'public_profile']
}
});
const fbResult = result.result;
if (!fbResult?.accessToken?.token) {
throw new Error('Facebook login failed - no access token received');
}
// Facebook uses accessToken for Supabase authentication
const { data, error } = await supabase.auth.signInWithIdToken({
provider: 'facebook',
token: fbResult.accessToken.token,
});
if (error) throw error;
return data;
} catch (error) {
console.error('Facebook sign-in error:', error);
throw error;
}
}
async signOut() {
// Sign out from Supabase
await supabase.auth.signOut();
// Optionally sign out from social providers
await SocialLogin.logout({
provider: 'google' // or 'apple', 'facebook'
});
}
getCurrentUser() {
return supabase.auth.getUser();
}
onAuthStateChange(callback: (event: string, session: any) => void) {
return supabase.auth.onAuthStateChange(callback);
}
}
export const authService = new AuthService();
Paso 7: Implementación en su aplicación
Inicie el servicio y maneje la autenticación:
// main.ts or app component
import { authService } from './services/auth';
async function initializeApp() {
await authService.initializeSocialLogin();
// Listen to auth state changes
authService.onAuthStateChange((event, session) => {
if (event === 'SIGNED_IN') {
console.log('User signed in:', session.user);
// Redirect to authenticated area
} else if (event === 'SIGNED_OUT') {
console.log('User signed out');
// Redirect to login
}
});
}
initializeApp();
Cree botones de inicio de sesión en su interfaz de usuario:
// Login component
async function handleGoogleLogin() {
try {
const user = await authService.signInWithGoogle();
console.log('Signed in with Google:', user);
} catch (error) {
console.error('Login failed:', error);
}
}
async function handleAppleLogin() {
try {
const user = await authService.signInWithApple();
console.log('Signed in with Apple:', user);
} catch (error) {
console.error('Login failed:', error);
}
}
async function handleFacebookLogin() {
try {
const user = await authService.signInWithFacebook();
console.log('Signed in with Facebook:', user);
} catch (error) {
console.error('Login failed:', error);
}
}
async function handleLogout() {
try {
await authService.signOut();
console.log('Signed out successfully');
} catch (error) {
console.error('Logout failed:', error);
}
}
Configuración 8: Configuración específica de la plataforma
Configuración de iOS
Para obtener instrucciones de configuración de iOS detalladas, consulte nuestros guías específicas de plataforma:
- Configuración de iOS de Google - Configuración de esquemas de URL, configuración de Info.plist
- Configuración de iOS de Apple - Configuración de la capacidad de inicio de sesión con Apple
- Configuración de iOS de Facebook (en general guía de Facebook) - Configuración de Facebook SDK
Resumen rápido - Agregar a ios/App/App/Info.plist:
<!-- Google Sign-In URL scheme -->
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>YOUR_REVERSED_CLIENT_ID</string>
</array>
</dict>
</array>
<!-- Apple Sign-In capability -->
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
Siga las guías vinculadas para obtener instrucciones de configuración completas de iOS, incluida la configuración del proyecto de Xcode.
Configuración de Android
Para obtener instrucciones de configuración de Android detalladas, consulte nuestras guías específicas de plataforma:
- Configuración de Android de Google - Huellas de SHA-1, configuración de servicios de Google Play
- Configuración de Android de Apple - Configuración del ID de servicio para Android
- Configuración de Android de Facebook (en general guía de Facebook) - Integración de Facebook SDK
Configuración de Android esencial:
1. Obtenga su huella de SHA-1 (requerido para Google):
# For debug builds (development)
cd android
./gradlew signingReport
# Look for the SHA1 fingerprint under "Variant: debug"
# Add this SHA1 to your Google Cloud Console Android OAuth client
2. Configura AndroidManifest.xml - Agregar a android/app/src/main/AndroidManifest.xml:
<!-- Internet permission -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Facebook configuration -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<meta-data
android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token"/>
3. Agrega recursos de Facebook a android/app/src/main/res/values/strings.xml:
<string name="facebook_app_id">YOUR_FACEBOOK_APP_ID</string>
<string name="facebook_client_token">YOUR_FACEBOOK_CLIENT_TOKEN</string>
Sigue las guías de la plataforma enlazada para la configuración completa de Android, incluyendo la configuración de Google Play Services y el nombre de paquete.
Paso 9: Uso de la base de datos de Supabase con usuarios autenticados
Una vez que los usuarios estén autenticados, puedes usar la base de datos de Supabase con seguridad de nivel de fila (RLS):
// Example: Fetch user profile
async function getUserProfile() {
const { data: user } = await supabase.auth.getUser();
if (user) {
const { data, error } = await supabase
.from('profiles')
.select('*')
.eq('id', user.user.id)
.single();
return data;
}
}
// Example: Update user profile
async function updateUserProfile(updates: any) {
const { data: user } = await supabase.auth.getUser();
if (user) {
const { data, error } = await supabase
.from('profiles')
.update(updates)
.eq('id', user.user.id);
return data;
}
}
Consideraciones de seguridad importantes
- Jamás expungas claves sensibles en tu cliente code
- Utiliza variables de entorno para la configuración
- Habilitar la seguridad de nivel de fila en Supabase
- Validar tokens en su servidor de backend si es necesario
- Gestionar la refresco de tokens automáticamente con Supabase
Resolución de problemas de problemas comunes
Errores de coincidencia de tokens
- Asegúrese de que las configuraciones de proveedor de OAuth coincidan entre el plugin de inicio de sesión social y Supabase
- Verifique que las URL de redirección estén configuradas correctamente
Problemas específicos de plataforma
- iOS: Verifica que tu identificador de paquete coincida con tu configuración de desarrollador de Apple
- Android: Asegúrate de que los huellas digitales SHA1 estén agregadas correctamente a Google Console
Interrupciones del flujo de autenticación
- Implementa un manejo de errores adecuado para problemas de red
- Agrega estados de carga durante la autenticación
Conclusión
Ahora tienes un sistema de autenticación completo que combina el backend robusto de Supabase con capacidades de inicio de sesión social nativa. Esta configuración proporciona:
- Autenticación social segura y nativa
- Gestión de tokens suave
- Integración de base de datos en tiempo real
- Compatibilidad cruzada de plataformas
La combinación de Supabase y el plugin de inicio de sesión social Capgo ofrece una solución de autenticación poderosa y escalable para tus Capacitor aplicaciones.
Para características avanzadas como autenticación de factor múltiple o o la autenticación de factor múltipleo ver la documentación de Supabase y la documentación del plugin de inicio de sesión social Sigue adelante desde Configuración de autenticación de Supabase con __CAPGO_KEEP_0__ Plugin de inicio de sesión social.
Keep going from Setup Supabase Authentication with Capacitor Social Login Plugin
Configuración de autenticación de Supabase con __CAPGO_KEEP_0__ Plugin de inicio de sesión social Setup Supabase Authentication with Capacitor Social Login Plugin o la autenticación de factor múltiple o @capgo/capacitor-login-social para los detalles de implementación en @capgo/capacitor-login-social @capgo/capacitor-passkey para los detalles de implementación en @capgo/capacitor-passkey @capgo/capacitor-biométrica-nativa para los detalles de implementación en @capgo/capacitor-biométrica-nativa Autenticación de dos factores para los detalles de implementación en Autenticación de dos factores, y SSO (Empresas) para los detalles de implementación en SSO (Empresas).