Passer à la navigation

Démarrage

  1. Installez le package

    Fenêtre de terminal
    bun add @capgo/capacitor-social-login
  2. Synchronisez avec les projets natifs

    Fenêtre de terminal
    bunx cap sync
  3. Initialisez à l'initialisation de l'application

    import { SocialLogin } from '@capgo/capacitor-social-login';
    await SocialLogin.initialize({
    google: {
    webClientId: 'your-google-web-client-id',
    iOSServerClientId: 'your-google-server-client-id',
    mode: 'online',
    },
    apple: {
    clientId: 'your-apple-service-id',
    useProperTokenExchange: true,
    useBroadcastChannel: true,
    },
    facebook: {
    appId: 'your-facebook-app-id',
    },
    twitter: {
    clientId: 'your-twitter-client-id',
    redirectUrl: 'myapp://oauth/twitter',
    },
    oauth2: {
    github: {
    appId: 'your-github-client-id',
    authorizationBaseUrl: 'https://github.com/login/oauth/authorize',
    accessTokenEndpoint: 'https://github.com/login/oauth/access_token',
    redirectUrl: 'myapp://oauth/github',
    scope: 'read:user user:email',
    pkceEnabled: true,
    },
    },
    });

Exemples de flux de base

Exemples de flux de base
await SocialLogin.login({
provider: 'google',
options: { scopes: ['profile', 'email'] },
});
await SocialLogin.login({
provider: 'oauth2',
options: {
providerId: 'github',
scope: 'read:user user:email',
},
});
const status = await SocialLogin.isLoggedIn({ provider: 'google' });
await SocialLogin.logout({ provider: 'google' });
// For providers that support this mode
const authCodeResult = await SocialLogin.getAuthorizationCode({ provider: 'google' });
await SocialLogin.refresh({ provider: 'google', options: {} as never });
const jwt = await SocialLogin.decodeIdToken({
idToken: 'eyJhbGciOi...',
});
const { date } = await SocialLogin.getAccessTokenExpirationDate({
accessTokenExpirationDate: Date.now() + 3600 * 1000,
});
const expired = await SocialLogin.isAccessTokenExpired({
accessTokenExpirationDate: Date.now() + 1000,
});
const active = await SocialLogin.isRefreshTokenAvailable({ refreshToken: 'a-token' });

google.mode: 'offline' retourne serverAuthCode à partir de la connexion. Dans ce mode, logout, isLoggedIn, getAuthorizationCode et refresh ne sont pas disponibles.

Utilisez serverAuthCode seulement en tant qu'entrée pour l'échange de jetons de votre serveur backend. Si vous avez besoin d'appeler SocialLogin.refresh() au lieu de cela. google.mode: 'online' Apple

Copier dans le presse-papier

Section intitulée “Apple”

Set useProperTokenExchange: true pour un traitement strict des jetons et useBroadcastChannel: true pour la configuration simplifiée d'Android.

Utilisez OAuth2LoginOptions.flow: 'redirect' pour les flux web qui se déplacent loin de la page.

Vous pouvez désactiver les fournisseurs non utilisés pour réduire les binaires natifs :

import type { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'My App',
webDir: 'dist',
plugins: {
SocialLogin: {
providers: {
google: true,
facebook: true,
apple: true,
twitter: false,
},
},
},
};

Si vous utilisez Prise en main pour planifier l'authentification et les flux de compte, connectez-le avec Utilisation de @capgo/capacitor-login-social pour la capacité native dans l'utilisation de @capgo/capacitor-login-social, @capgo/capacitor-login-social pour le détail d'implémentation dans @capgo/capacitor-login-social, @capgo/capacitor-passkey pour le détail d'implémentation dans @capgo/capacitor-passkey, @capgo/capacitor-biométrique-natif pour le détail d'implémentation dans @capgo/capacitor-biométrique-natif, et Authentification à deux facteurs pour le détail d'implémentation dans Authentification à deux facteurs.