@skia-id/sdk
v0.1.1
Published
Skia ID OAuth 2.1 / OIDC client SDK — anonymous identity verification for websites
Maintainers
Readme
@skia-id/sdk
OAuth 2.1 / OIDC client SDK for Skia ID — anonymous identity verification for websites.
Users verify their age once, then sign into your site with a privacy-preserving proxy identity. No passwords, no personal data exposed.
Install
npm install @skia-id/sdkQuick Start
import { SkiaOAuthClient } from "@skia-id/sdk";
const skia = new SkiaOAuthClient({
clientId: "your-client-id", // from dev.skiaid.org
redirectUri: "https://yourapp.com/callback",
scopes: ["openid", "email", "age"],
});
// 1. Redirect user to Skia login
await skia.login();
// 2. On your callback page — exchange the code for tokens
const tokens = await skia.handleCallback();
// 3. Get user info
const user = await skia.getUserInfo(tokens.access_token);
// { sub: "unique-per-site", email: "[email protected]",
// name: "CosmicBadger", age_over_18: true }Configuration
new SkiaOAuthClient({
clientId: string; // Required — OAuth client ID
redirectUri: string; // Required — must match registered URI
scopes?: string[]; // Default: ["openid", "email"]
apiUrl?: string; // Default: "https://oauth.skiaid.org"
usePKCE?: boolean; // Default: true (recommended for SPAs)
});Available Scopes
| Scope | Claims |
|-------|--------|
| openid | sub (unique pairwise identifier) |
| email | email, email_verified |
| profile | name (pseudonym) |
| age | age_over_18 |
API
| Method | Description |
|--------|-------------|
| login() | Redirect to Skia authorization |
| handleCallback(clientSecret?) | Exchange auth code for tokens |
| getUserInfo(accessToken) | Fetch user claims |
| decodeIdToken(idToken) | Decode JWT payload (client-side, no verification) |
| getEndpoints() | Get all OAuth/OIDC endpoint URLs for the configured issuer |
Endpoint Discovery
The SDK exports SKIA_ISSUER and a getEndpoints() helper so you never need to hardcode URLs:
import { SKIA_ISSUER, SkiaOAuthClient } from "@skia-id/sdk";
// Use the issuer for OIDC auto-discovery
// SKIA_ISSUER === "https://oauth.skiaid.org"
// Or get all endpoints programmatically
const skia = new SkiaOAuthClient({ clientId: "...", redirectUri: "..." });
const endpoints = skia.getEndpoints();
// { issuer, authorization, token, userinfo, revocation, jwks, discovery }Register Your App
Create OAuth credentials at dev.skiaid.org.
License
MIT
