Paketstatus: Aktuelles Paket. Hauptprozess-App,contextBridge-Preload und renderer-seitige Bridge sind implementiert. Einechter IdP-Round-Trip auf Produktionsinfrastruktur steht noch manuell aus.
Einstiegspunkte
Eintrag
Zweck
@xid-kit/electron
Standardexport: Renderer-Oberfläche und Typen
@xid-kit/electron/main
Nur Hauptprozess: XidElectronApp
@xid-kit/electron/renderer
Renderer-Prozess: getXidBridge, XidClient
@xid-kit/electron/preload
Vorgefertigtes Preload-Skript, das window.xidBridge verfügbar macht
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()
Benutzerdefiniertes Schema (Alternative zu 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)
Token-Speicher
Tokens werden mit safeStorage.encryptString() (OS-Keychain)verschlüsselt und standardmäßig als Binärdateien inapp.getPath('userData')/xid-tokens/ gespeichert.
Wenn safeStorage.isEncryptionAvailable()false zurückgibt(headless Linux ohne Keyring), löst setItem() einenElectronStorageError mit Code encryption_unavailable aus,anstatt stillschweigend Klartext zu schreiben.
Das Speicherverzeichnis mit storageDir inXidElectronMainOptions überschreiben.
Gemeinsamer nativer Vertrag
Methode
Beschreibung
signIn(options?)
Öffnet Systembrowser, tauscht Code ein, speichert Tokens
signOut()
Löscht lokale Tokens
getAccessToken()
Gibt den aktuellen Token zurück (erneuert ihn bei nahendem Ablauf); nullwenn abgemeldet