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()
自定义 scheme(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)