Migration Guide from @capacitor-community/facebook-login to @capgo/capacitor-social-login
Este contenido aún no está disponible en tu idioma.
Installation
- 
Remove the old package: Terminal window npm uninstall @capacitor-community/facebook-login
- 
Install the new package: Terminal window npm install @capgo/capacitor-social-loginnpx cap sync
Code Changes
Import Changes
import { FacebookLogin } from '@capacitor-community/facebook-login';import { SocialLogin } from '@capgo/capacitor-social-login';Initialization
// Old package required no explicit initialization in code// Configuration was done only in native platforms
// New package requires explicit initializationawait SocialLogin.initialize({  facebook: {    appId: 'YOUR_FACEBOOK_APP_ID',        // Required for web and Android    clientToken: 'YOUR_CLIENT_TOKEN'       // Required for Android  }});Login
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'  }});Response Type Changes
The response object structure has changed. Here’s how to handle the new response:
// Old response typeinterface FacebookLoginResponse {  accessToken: {    applicationId: string;    userId: string;    token: string;    expires: string;  };  recentlyGrantedPermissions: string[];  recentlyDeniedPermissions: string[];}
// New response typeinterface 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;    };  };}Checking Login Status
const result = await FacebookLogin.getCurrentAccessToken();const isLoggedIn = result && result.accessToken;
const status = await SocialLogin.isLoggedIn({  provider: 'facebook'});const isLoggedIn = status.isLoggedIn;Logout
await FacebookLogin.logout();
await SocialLogin.logout({  provider: 'facebook'});Platform Specific Changes
Android Setup
- The Android setup remains similar, but configuration is now done through the plugin’s initialize method:
// 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  }});iOS Setup
- The iOS setup in AppDelegate.swiftremains the same:
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])- The Info.plistconfiguration remains the same:
<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>Breaking Changes
- Explicit initialization is now required
- Response object structure has changed significantly
- Client token is now required for Android
- Different method names and parameter structures
- Error handling and error types have changed
For more detailed setup instructions, please refer to the official documentation.