Migrazione di Autenticazione Google a @capgo/social-login
Copiare un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Panoramica
Sezione intitolata “Panoramica”Questa guida fornisce passaggi dettagliati per la migrazione da @codetrix-studio/capacitor-google-auth a @capgo/capacitor-social-login, garantendo una transizione liscia e un'esperienza di autenticazione migliorata. Il nuovo plugin unifica i provider di autenticazione sociale multipli sotto un unico e coerente API.
Installazione
Sezione intitolata “Installazione”-
Elimina il vecchio pacchetto:
Finestra del terminale npm uninstall @codetrix-studio/capacitor-google-auth -
Installa il nuovo pacchetto:
Finestra del terminale npm install @capgo/capacitor-social-loginnpx cap sync
Importanti modifiche nella configurazione di Google Auth
Sezione intitolata “Modifiche importanti nella configurazione di autenticazione di Google”Requisito per l'ID del client web
Sezione intitolata “Requisito per l'ID del client web”Modifica criticaLa versione aggiornata del plugin richiede l'utilizzo di un ID del client web per tutte le piattaforme.
Avrai bisogno di:
- Crea un ID del client web nel Console di Google Cloud se non ne hai già uno (Come ottenere le credenziali)
- Utilizza questo ID del client web nel campo per tutte le piattaforme
webClientIdPer Android, tuttavia, è ancora necessario creare un ID del client Android con il tuo SHA1, ma ciò è solo a scopo di verifica - il token non verrà utilizzato ( - Guida di configurazione per AndroidPer utilizzare il plugin con Google Auth, devi utilizzare un ID del client web per tutte le piattaforme.)
Code Modifiche
Sezione intitolata “Code Modifiche”Importa Modifiche
Sezione intitolata “Importa Modifiche”import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';import { SocialLogin } from '@capgo/capacitor-social-login';Inizializzazione
Sezione intitolata “Inizializzazione”La configurazione di avvio si trasforma da una semplice GoogleAuth.initialize() chiamata a una struttura più complessa SocialLogin.initialize() con configurazione Google nidificata:
GoogleAuth.initialize({ clientId: 'CLIENT_ID.apps.googleusercontent.com', scopes: ['profile', 'email'], grantOfflineAccess: true,});
await SocialLogin.initialize({ google: { webClientId: 'WEB_CLIENT_ID.apps.googleusercontent.com', // Use Web Client ID for all platforms iOSClientId: 'IOS_CLIENT_ID', // for iOS mode: 'offline' // replaces grantOfflineAccess }});Il metodo di accesso cambia da GoogleAuth.signIn() a SocialLogin.login() con specificazione del provider esplicita:
const user = await GoogleAuth.signIn();const res = await SocialLogin.login({ provider: 'google', options: { scopes: ['email', 'profile'], forceRefreshToken: true // if you need refresh token }});Modifiche specifiche per piattaforma
Sezione intitolata “Modifiche specifiche per piattaforma”Android
Aggiorna il tuo- Guida completa per la configurazione di Android
MainActivity.java(Copia negli appunti):
import ee.forgr.capacitor.social.login.GoogleProvider; import ee.forgr.capacitor.social.login.SocialLoginPlugin; import ee.forgr.capacitor.social.login.ModifiedMainActivityForSocialLoginPlugin; import com.getcapacitor.PluginHandle; import com.getcapacitor.Plugin; import android.content.Intent; import android.util.Log;
public class MainActivity extends BridgeActivity { public class MainActivity extends BridgeActivity implements ModifiedMainActivityForSocialLoginPlugin {
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);
if (requestCode >= GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MIN && requestCode < GoogleProvider.REQUEST_AUTHORIZE_GOOGLE_MAX) { PluginHandle pluginHandle = getBridge().getPlugin("SocialLogin"); if (pluginHandle == null) { Log.i("Google Activity Result", "SocialLogin login handle is null"); return; } Plugin plugin = pluginHandle.getInstance(); if (!(plugin instanceof SocialLoginPlugin)) { Log.i("Google Activity Result", "SocialLogin plugin instance is not SocialLoginPlugin"); return; } ((SocialLoginPlugin) plugin).handleGoogleLoginIntent(requestCode, data); } }
public void IHaveModifiedTheMainActivityForTheUseWithSocialLoginPlugin() {}}-
Nessuna modifica importante è necessaria in AppDelegate.swift (Guida di configurazione per iOS)
-
Aggiorna la tua configurazione in
capacitor.config.json, non la utilizziamo nel nuovo plugin:
{ "plugins": { "GoogleAuth": { "scopes": ["profile", "email"], "serverClientId": "xxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com", "forceCodeForRefreshToken": true }}- Elimina i metatag Google Sign-In dai tuoi
index.htmlSe li stavi utilizzando:
<meta name="google-signin-client_id" content="{your client id here}" /><meta name="google-signin-scope" content="profile email" />Tipo di Risposta Modificato
Sezione intitolata “Tipo di Risposta Modificato”La risposta di autenticazione fornisce ora un oggetto strutturato contenente informazioni sul provider, i token di accesso, i token ID e i dati del profilo utente:
interface GoogleLoginResponse { provider: 'google'; result: { accessToken: { token: string; expires: string; // ... other token fields } | null; idToken: string | null; profile: { email: string | null; familyName: string | null; givenName: string | null; id: string | null; name: string | null; imageUrl: string | null; }; };}La struttura della risposta include:
- provider: Identifica il provider di autenticazione (
'google') - result.accessToken: Dettagli del token di accesso con scadenza
- result.idToken: Token ID per l'autenticazione
- result.profile: Informazioni del profilo dell'utente, compreso l'email, il nome e l'URL dell'immagine
Funzionalità aggiuntive
Sottosezione intitolata “Funzionalità aggiuntive”La nuova pacchetto supporta più provider di autenticazione sociale oltre a Google:
Questa approccio unificato offre:
- Consistenza API su tutti i provider
- Miglior supporto per TypeScript
- Miglior gestione degli errori
- Sostegno attivo e comunitario
Controlla il documentazione principale per istruzioni di configurazione dettagliate per questi provider aggiuntivi.