Aller directement au contenu

Migration du login Facebook vers @capgo/social-login

Ce guide fournit des instructions complètes pour la migration de @capacitor-community/facebook-login à @capgo/capacitor-social-loginLe nouveau plugin modernise l'authentification Facebook avec un API unifié qui prend en charge plusieurs fournisseurs sociaux, une meilleure prise en charge de TypeScript et des capacités améliorées.

  1. Supprimer l'ancien package :

    Fenêtre de terminal
    npm uninstall @capacitor-community/facebook-login
  2. Installer le nouveau package :

    Fenêtre de terminal
    npm install @capgo/capacitor-social-login
    npx cap sync
import { FacebookLogin } from '@capacitor-community/facebook-login';
import { SocialLogin } from '@capgo/capacitor-social-login';

Clé de modification : La nouvelle package nécessite un setup explicite dans votre code:

// Old package required no explicit initialization in code
// Configuration was done only in native platforms
// New package requires explicit initialization
await SocialLogin.initialize({
facebook: {
appId: 'YOUR_FACEBOOK_APP_ID', // Required for web and Android
clientToken: 'YOUR_CLIENT_TOKEN' // Required for Android
}
});

La méthode de connexion accepte maintenant un paramètre de fournisseur :

const FACEBOOK_PERMISSIONS = ['email', 'public_profile'];
const result = await FacebookLogin.login({ permissions: FACEBOOK_PERMISSIONS });
const result = await SocialLogin.login({
provider: 'facebook',
options: {
permissions: ['email', 'public_profile'],
limitedLogin: false,
nonce: 'optional_nonce'
}
});

La structure de la réponse a été modernisée avec un profil objet plus complet :

// Old response type
interface FacebookLoginResponse {
accessToken: {
applicationId: string;
userId: string;
token: string;
expires: string;
};
recentlyGrantedPermissions: string[];
recentlyDeniedPermissions: string[];
}
// New response type
interface FacebookLoginResponse {
provider: 'facebook';
result: {
accessToken: {
token: string;
applicationId?: string;
expires?: string;
userId?: string;
permissions?: string[];
declinedPermissions?: string[];
} | null;
idToken: string | null;
profile: {
userID: string;
email: string | null;
friendIDs: string[];
birthday: string | null;
ageRange: { min?: number; max?: number } | null;
gender: string | null;
location: { id: string; name: string } | null;
hometown: { id: string; name: string } | null;
profileURL: string | null;
name: string | null;
imageURL: string | null;
};
};
}

Différences clés:

  • La réponse inclut maintenant un provider champ identifiant le fournisseur d'authentification
  • Objet plus détaillé profile avec des informations utilisateur supplémentaires
  • Structure cohérente pour tous les fournisseurs de connexion sociale
const result = await FacebookLogin.getCurrentAccessToken();
const isLoggedIn = result && result.accessToken;
const status = await SocialLogin.isLoggedIn({
provider: 'facebook'
});
const isLoggedIn = status.isLoggedIn;

Déconnexion

Se déconnecter
await FacebookLogin.logout();
await SocialLogin.logout({
provider: 'facebook'
});

Changements spécifiques au plateforme

Changements spécifiques au plateforme

La configuration est maintenant gérée par la méthode initialize :

// AndroidManifest.xml changes remain the same
// strings.xml become irrelevant
// Additionally initialize in your code:
await SocialLogin.initialize({
facebook: {
appId: 'your-app-id',
clientToken: 'your-client-token' // New requirement
}
});

ImportantLe jeton client est maintenant requis pour l'authentification d'Android.

  1. La configuration iOS dans AppDelegate.swift reste la même :
import FBSDKCoreKit
// In application:didFinishLaunchingWithOptions:
FBSDKCoreKit.ApplicationDelegate.shared.application(
application,
didFinishLaunchingWithOptions: launchOptions
)
// In application:openURL:options:
ApplicationDelegate.shared.application(
app,
open: url,
sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String,
annotation: options[UIApplication.OpenURLOptionsKey.annotation]
)
  1. La Info.plist configuration reste la même :
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb[APP_ID]</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>[APP_ID]</string>
<key>FacebookClientToken</key>
<string>[CLIENT_TOKEN]</string>
<key>FacebookDisplayName</key>
<string>[APP_NAME]</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fbauth</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>

Résumé des changements majeurs lors de la migration :

  1. L'initialisation explicite est désormais requise - Doit appeler initialize() avant d'utiliser
  2. La structure de l'objet réponse a changé de manière significative - Nouveau format de résultat imbriqué avec des données de profil améliorées
  3. Un jeton client est désormais requis pour Android - Configuration supplémentaire nécessaire
  4. Des noms de méthode et des structures de paramètres différents - Approche basée sur les fournisseurs
  5. La gestion des erreurs et les types d'erreurs ont changé - Informations d'erreur plus détaillées

Le nouveau plugin fournit :

  • Unification API sur plusieurs fournisseurs sociaux (Google, Apple, Facebook)
  • Amélioration de la prise en charge de TypeScript avec de meilleures définitions de type
  • Données de profil améliorées avec plus d'informations sur l'utilisateur
  • Maintenance active et support de la communauté
  • Traitement d'erreurs cohérent sur tous les fournisseurs
  • Gestion de jetons améliorée avec une gestion correcte de l'expiration

Pour plus de détails sur les instructions de configuration détaillées, veuillez vous référer à __CAPGO_KEEP_0__. documentation officielle.