SDK Electron avec flux PKCE dans le processus principal, preloadcontextBridge, stockage des jetons dans le trousseau OS et stratégies decallback loopback ou schéma personnalisé.
Le statut du package est Package actuel. L’application du processusprincipal, le preload contextBridge et le pont côté rendu sontimplémentés. Un aller-retour réel avec un IdP sur une infrastructure deproduction est en attente de vérification manuelle.
Points d’entrée
Entrée
Objectif
@xid-kit/electron
Export par défaut : surface de rendu et types
@xid-kit/electron/main
Processus principal uniquement : XidElectronApp
@xid-kit/electron/renderer
Processus de rendu : getXidBridge, XidClient
@xid-kit/electron/preload
Script de préchargement prêt à l’emploi qui expose window.xidBridge
import { getXidBridge } from '@xid-kit/electron/renderer'const bridge = getXidBridge()// Opens system browser, waits for loopback callback, exchanges code.const accessToken = await bridge.signIn()// Get current access token (transparently refreshes if near expiry).const token = await bridge.getAccessToken() // null when not signed in// Get full session (accessToken + expiresAt in epoch seconds).const session = await bridge.getSession()// Sign out and clear tokens.await bridge.signOut()
Schéma personnalisé (alternative au loopback)
// main.tsimport { app } from 'electron'import { XidElectronApp } from '@xid-kit/electron/main'app.setAsDefaultProtocolClient('myapp')const xidApp = new XidElectronApp({ issuer: 'https://xid.dev', clientId: 'client_abc123', callbackStrategy: 'custom-scheme', customScheme: 'myapp', // redirect_uri = myapp://callback})xidApp.registerDeepLinkHandler(app)
Stockage des jetons
Les jetons sont chiffrés avec safeStorage.encryptString()(trousseau OS) et stockés sous forme de fichiers binaires dansapp.getPath('userData')/xid-tokens/ par défaut.
Si safeStorage.isEncryptionAvailable() retourne false (Linuxheadless sans trousseau), setItem() lèveElectronStorageError avec le code encryption_unavailableplutôt que d’écrire en clair silencieusement.
Remplacer le répertoire de stockage avec storageDir dansXidElectronMainOptions.
Contrat natif commun
Méthode
Description
signIn(options?)
Ouvre le navigateur système, échange le code, stocke les jetons
signOut()
Efface les jetons locaux
getAccessToken()
Retourne le jeton courant (rafraîchit si proche de l’expiration) ; null sidéconnecté