Guida alla Migrazione da @capacitor-community/apple-sign-in a @capgo/capacitor-social-login
Panoramica
Section titled “Panoramica”Questa guida delinea la transizione dal plugin legacy @capacitor-community/apple-sign-in al moderno pacchetto @capgo/capacitor-social-login. Il nuovo plugin fornisce un’interfaccia unificata per più provider di autenticazione social con supporto TypeScript migliorato e manutenzione attiva.
Installazione
Section titled “Installazione”-
Rimuovi il vecchio pacchetto:
Terminal window npm uninstall @capacitor-community/apple-sign-in -
Installa il nuovo pacchetto:
Terminal window npm install @capgo/capacitor-social-loginnpx cap sync
Modifiche al Codice
Section titled “Modifiche al Codice”Modifiche all’Importazione
Section titled “Modifiche all’Importazione”import { SignInWithApple } from '@capacitor-community/apple-sign-in';import { SocialLogin } from '@capgo/capacitor-social-login';Inizializzazione
Section titled “Inizializzazione”Modifica Chiave: Il nuovo plugin richiede un passaggio di inizializzazione che non era necessario prima.
// Nessuna inizializzazione necessaria nel vecchio pacchetto// Per iOS: Configurazione di baseawait SocialLogin.initialize({ apple: {} // Configurazione base per iOS});
// Per Android: Configurazione aggiuntiva richiestaawait SocialLogin.initialize({ apple: { clientId: 'YOUR_SERVICE_ID', // Service ID dal Portale Sviluppatori Apple redirectUrl: 'https://your-backend.com/callback' // URL di callback del tuo backend }});Nota Importante: Per iOS, fornisci una configurazione di base, mentre Android richiede dettagli aggiuntivi incluso un Service ID e un URL di callback del backend per l’autenticazione OAuth basata sul web.
Accesso
Section titled “Accesso”Il processo di login si semplifica da più parametri a un’API più pulita:
const result = await SignInWithApple.authorize({ clientId: 'com.your.app', redirectURI: 'https://your-app.com/callback', scopes: 'email name', state: '12345', nonce: 'nonce'});
const result = await SocialLogin.login({ provider: 'apple', options: { // Opzionale: Aggiungi scopes se necessario scopes: ['email', 'name'], nonce: 'nonce' }});Il nuovo plugin utilizza login() con provider: 'apple' e scopes opzionali piuttosto che passare singoli valori di configurazione come clientId e redirectURI.
Modifiche al Tipo di Risposta
Section titled “Modifiche al Tipo di Risposta”I risultati ora includono un oggetto accessToken con dettagli sulla scadenza e una sezione profile strutturata, sostituendo il formato di risposta più piatto del pacchetto originale:
// Vecchio tipo di rispostainterface AppleSignInResponse { response: { user: string; email: string | null; givenName: string | null; familyName: string | null; identityToken: string | null; authorizationCode: string | null; };}
// Nuovo tipo di rispostainterface SocialLoginResponse { provider: 'apple'; result: { accessToken: { token: string; expiresIn?: number; refreshToken?: string; } | null; idToken: string | null; profile: { user: string; email: string | null; givenName: string | null; familyName: string | null; }; };}Nuove Funzionalità
Section titled “Nuove Funzionalità”Il plugin aggiornato introduce funzionalità che non erano disponibili nel predecessore:
Verifica dello Stato di Login
// Non disponibile nel vecchio pacchettoconst status = await SocialLogin.isLoggedIn({ provider: 'apple'});Funzionalità di Logout
// Non disponibile nel vecchio pacchettoawait SocialLogin.logout({ provider: 'apple'});Questi metodi forniscono isLoggedIn() per verificare lo stato di autenticazione e la funzionalità logout().
Modifiche Specifiche per Piattaforma
Section titled “Modifiche Specifiche per Piattaforma”Configurazione iOS
Section titled “Configurazione iOS”iOS mantiene procedure di configurazione familiari tramite le capacità di Xcode:
- La configurazione iOS rimane in gran parte la stessa. Devi ancora:
- Abilitare la capacità “Sign In with Apple” in Xcode
- Configurare la tua app nel Portale Sviluppatori Apple
- Nessuna modifica al codice aggiuntiva richiesta per iOS
Configurazione Android
Section titled “Configurazione Android”Android ora riceve supporto nativo tramite autenticazione OAuth basata sul web:
Il nuovo plugin fornisce supporto Android out of the box, ma richiede configurazione aggiuntiva:
- Crea un Services ID nel Portale Sviluppatori Apple
- Configura un endpoint di autenticazione web
- Configura la tua app Android per gestire il flusso OAuth
- È richiesta la configurazione del servizio backend
Per istruzioni dettagliate sulla configurazione di Android, consulta la Guida alla Configurazione Android.
Vantaggi Chiave
Section titled “Vantaggi Chiave”Il pacchetto modernizzato fornisce:
- API Unificate tra più provider social (Google, Facebook, Apple)
- Tipizzazione TypeScript migliorata con migliori definizioni dei tipi
- Manutenzione attiva della comunità rispetto alla versione deprecata
- Supporto Android integrato tramite autenticazione basata sul web
- Gestione persistente dello stato di login
- Gestione degli errori migliorata con tipi di errore coerenti
Breaking Changes
Section titled “Breaking Changes”- L’inizializzazione esplicita è ora richiesta - nessuna configurazione predefinita
- La struttura dell’oggetto di risposta è cambiata - formato di risultato nidificato
- L’implementazione Android richiede un servizio backend per OAuth
- La gestione dell’aggiornamento dei token è diversa - gestione migliorata dei token
- La gestione degli errori e i tipi di errore sono cambiati - errori più dettagliati
Per istruzioni di configurazione più dettagliate, consulta la documentazione ufficiale.