Saltare al contenuto

Migrazione di autenticazione di Google a @capgo/social-login

GitHub

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.

  1. Elimina il vecchio pacchetto:

    Finestra del terminale
    npm uninstall @codetrix-studio/capacitor-google-auth
  2. Installa il nuovo pacchetto:

    Finestra del terminale
    npm install @capgo/capacitor-social-login
    npx cap sync

Modifiche importanti nella configurazione di autenticazione di Google

Sezione intitolata “Modifiche importanti nella configurazione di autenticazione di Google”

Modifica critica: L'aggiornamento del plugin richiede l'utilizzo di un ID del client web su tutti i piattaforme.

Avrai bisogno di:

  1. Crea un ID del client web nel Console di Google Cloud se non ne hai uno (Come ottenere le credenziali)
  2. Utilizza questo ID del client web nel webClientId campo per tutte le piattaforme
  3. Per 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 Android)
import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
import { SocialLogin } from '@capgo/capacitor-social-login';

La configurazione 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
}
});
  1. Aggiorna il tuo MainActivity.java (Guida completa per la configurazione di Android):
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() {}
}
  1. Nessuna modifica importante è necessaria in AppDelegate.swift (Guida per la configurazione di iOS)

  2. Aggiorna la tua configurazione in capacitor.config.json, non lo utilizziamo nel nuovo plugin:

{
"plugins": {
"GoogleAuth": {
"scopes": ["profile", "email"],
"serverClientId": "xxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"forceCodeForRefreshToken": true
}
}
  1. Elimina le meta tag di Google Sign-In dal tuo index.html se le stavi utilizzando:
<meta name="google-signin-client_id" content="{your client id here}" />
<meta name="google-signin-scope" content="profile email" />

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 di identificazione per l'autenticazione
  • result.profile: Informazioni di profilo dell'utente, compreso l'indirizzo email, il nome e l'URL dell'immagine

La nuova pacchetto supporta più provider di autenticazione sociale oltre a Google:

Questa approccio unificato fornisce:

  • Consistenza API su tutti i provider
  • Sostegno migliorato per TypeScript
  • Miglioramento delle funzioni di errore
  • Manutenzione attiva e supporto della community

Controlla il documento principale per le istruzioni di configurazione dettagliate per questi provider aggiuntivi.

Continua da Google Auth Migration a @capgo/social-login

Sezione intitolata “Continua da Google Auth Migration a @capgo/social-login”

Se stai utilizzando Google Auth Migration a @capgo/social-login per pianificare l'autenticazione e le flussi di account, connettilo con Utilizza @capgo/capacitor-social-login per la capacità nativa in Utilizza @capgo/capacitor-social-login, @capgo/capacitor-login-social per i dettagli di implementazione in @capgo/capacitor-login-social @capgo/capacitor-passkey per i dettagli di implementazione in @capgo/capacitor-passkey @capgo/capacitor-biometria-nativa per i dettagli di implementazione in @capgo/capacitor-biometria-nativa, e Autenticazione a due fattori per i dettagli di implementazione in Autenticazione a due fattori.