Passer à la navigation

Migration d'authentification Google à @capgo/social-login

GitHub

Cette guide fournit des étapes complètes pour la migration de @codetrix-studio/capacitor-google-auth Vers @capgo/capacitor-social-login, ensuring a smooth transition and improved authentication experience. The new plugin unifies multiple social authentication providers under a single, consistent API.

  1. Supprimez l'ancien package :

    Fenêtre de terminal
    npm uninstall @codetrix-studio/capacitor-google-auth
  2. Installez le nouveau package :

    Fenêtre de terminal
    npm install @capgo/capacitor-social-login
    npx cap sync

Changements importants dans la configuration d'authentification Google

Section intitulée « Changements importants dans la configuration d'authentification Google »

Modification critique: La mise à jour du plugin nécessite l'utilisation d'un ID de client Web sur tous les plateformes.

Vous aurez besoin de :

  1. Créez un ID de client Web dans le console Google Cloud si vous n'en avez pas un (Obtenir les informations d'identification)
  2. Utilisez cet ID de client Web dans le webClientId champ pour toutes les plateformes
  3. Pour Android, vous devez toujours créer un ID de client Android avec votre SHA1, mais cela est uniquement pour des raisons de vérification - le jeton ne sera pas utilisé (guide de configuration Android)

Importer les modifications

Section intitulée « Mises à jour »
import { GoogleAuth } from '@codetrix-studio/capacitor-google-auth';
import { SocialLogin } from '@capgo/capacitor-social-login';

La configuration de base se transforme en une structure plus complexe GoogleAuth.initialize() appel simple en un appel plus structuré SocialLogin.initialize() avec une configuration Google imbriquée :

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
}
});

La méthode de connexion change de GoogleAuth.signIn() à SocialLogin.login() avec une spécification de fournisseur explicite :

const user = await GoogleAuth.signIn();
const res = await SocialLogin.login({
provider: 'google',
options: {
scopes: ['email', 'profile'],
forceRefreshToken: true // if you need refresh token
}
});
  1. Mettez à jour votre MainActivity.java (Guide complet de configuration d'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. Aucun changement majeur nécessaire dans AppDelegate.swift (Guide de configuration iOS)

  2. Mettez à jour votre configuration dans capacitor.config.jsonNous ne l'utilisons pas dans le nouveau plugin :

{
"plugins": {
"GoogleAuth": {
"scopes": ["profile", "email"],
"serverClientId": "xxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com",
"forceCodeForRefreshToken": true
}
}
  1. Supprimez les balises de connexion Google Sign-In de votre index.html Si vous les utilisiez :
<meta name="google-signin-client_id" content="{your client id here}" />
<meta name="google-signin-scope" content="profile email" />

La réponse d'authentification fournit maintenant un objet structuré contenant des informations du fournisseur, des jetons d'accès, des jetons d'ID et des données de profil de l'utilisateur :

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 structure de réponse comprend :

  • fournisseur: Identifie le fournisseur d'authentification ('google')
  • resultat.accessToken: Détails du jeton d'accès avec expiration
  • resultat.idToken: Jeton d'identification pour l'authentification
  • resultat.profil: Informations de profil de l'utilisateur incluant l'e-mail, le nom et l'URL de l'image

La nouvelle package prend en charge plusieurs fournisseurs d'authentification sociale au-delà de Google :

Cet approche unifiée fournit :

  • Une expérience cohérente API pour tous les fournisseurs
  • Une meilleure prise en charge de TypeScript
  • Une meilleure gestion des erreurs
  • Un soutien actif et communautaire

Vérifiez le documentation principale pour des instructions de configuration détaillées pour ces fournisseurs supplémentaires.

Si vous utilisez La migration d'authentification Google vers @capgo/social-login pour planifier les flux d'authentification et de compte, connectez-l’avec Utilisez @capgo/capacitor-social-login pour la capacité native dans Utilisez @capgo/capacitor-social-login, @capgo/capacitor-social-login pour le détail d'implémentation dans @capgo/capacitor-social-login, @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, @capgo/capacitor-native-biometric pour le détail d'implémentation dans @capgo/capacitor-native-biometric, et Authentification à deux facteurs pour le détail d'implémentation dans Authentification à deux facteurs.