OAuth 2.0 + PKCE · OpenID Connect · RFC 7636

Let your users sign in
with their Oasis identity

One button. Full access to character profiles, worlds, and DCOS documents — with user consent.

Already have an app? Sign in to manage it

The Button

Familiar. Trustworthy. One copy-paste away.

Preview only

Oasis logo

oasis_logo.svg

Official OAuth logo · SVG

Download
HTML
<img src="https://oasisbio.oasiscompany.org/assets/oasis_logo.svg" ... />
Continue with Oasis

Three steps to integrate

From zero to working OAuth in under 30 minutes.

01

Register your app

Create an OAuth app in the developer portal. Get your client_id instantly.

Create App →
02

Add the button

Copy the HTML, React, or JavaScript snippet and drop it into your login page.

View Snippets →
03

Access user data

Use the access token to fetch profile, characters, worlds, and DCOS documents.

See API Docs →

Code Snippets

Pick your stack and copy.

import Image from 'next/image';

function ContinueWithOasis({ clientId, redirectUri }: { clientId: string; redirectUri: string }) {
  const handleClick = async () => {
    const codeVerifier = generateRandomString(64);
    const codeChallenge = await base64url(sha256(codeVerifier));
    sessionStorage.setItem('pkce_verifier', codeVerifier);

    const url = new URL('https://oasisbio.oasiscompany.org/oauth/authorize');
    url.searchParams.set('client_id', clientId);
    url.searchParams.set('redirect_uri', redirectUri);
    url.searchParams.set('response_type', 'code');
    url.searchParams.set('scope', 'profile email');
    url.searchParams.set('state', generateRandomString(16));
    url.searchParams.set('code_challenge', codeChallenge);
    url.searchParams.set('code_challenge_method', 'S256');
    window.location.href = url.toString();
  };

  return (
    <button onClick={handleClick} style={{ display:'inline-flex', alignItems:'center', gap:10,
      padding:'10px 20px', background:'#000', color:'#fff', borderRadius:8,
      border:'none', cursor:'pointer', fontSize:15, fontWeight:500 }}>
      <Image src="https://oasisbio.oasiscompany.org/assets/oasis_logo.svg" width={20} height={17} alt="Oasis" />
      Continue with Oasis
    </button>
  );
}
Requires PKCE helper functions — see JavaScript tab for implementation..tsx

Available Scopes

Request only what you need. Users see exactly what they're granting.

profile

username, display name, avatar URL

email

email address

oasisbios:read

character list (title, slug, cover image)

oasisbios:full

full character data (abilities, worlds, eras, references)

dcos:read

DCOS document content

Ready to build?

Register your app and start integrating Oasis identity in minutes.

Start Building