Voorbeelden voor native en desktop

Test JavaScript en Python met de systeembrowser en zonder clientgeheim.

Registreer Native / desktop, authenticatie none, scope profile:read en callback http://127.0.0.1/callback. Geef je app-identificatie en bewijs van callbackbeheer op. Beschrijf bij een prototype de lokale IP-loopbacklistener en identificeer je app of repository. De werkelijke callback bevat een poort die het systeem kiest.

De demo’s openen de systeembrowser, ontvangen één callback op 127.0.0.1, controleren state, issuer en PKCE, lezen het profiel en trekken de koppeling in. Ze tonen geen accountgegevens en bewaren geen tokens op schijf. Gebruik tijdens beoordeling de eigenaar of een geaccepteerde tester.

De demo uitvoeren

Stel RD_ISSUER en de native RD_CLIENT_ID in, zonder geheim. Sla de twee bestanden voor je taal in dezelfde map op:

Download native-node.mjs en rd-oauth.ts. Node.js 24 voert verwijderbare TypeScript rechtstreeks uit; installatie of compilatie is niet nodig.

node native-node.mjs

Dezelfde transactie verbindt start en callback:

import { beginLink, finishLink, readProfile, revoke } from "./rd-oauth.ts";

// In the complete demo, redirectUri includes the bound loopback listener's port.
export function startNativeConnection(issuer, clientId, redirectUri) {
  const config = { issuer, clientId, redirectUri };
  const started = beginLink(config, "profile:read");
  return { config, ...started };
}

export async function completeNativeConnection(
  config,
  callbackUrl,
  transaction,
) {
  // The listener consumes the transaction once before invoking this function.
  const tokens = await finishLink(config, callbackUrl, transaction);
  try {
    await readProfile(config, tokens);
  } finally {
    await revoke(config, tokens.access_token);
  }
}

Sta de koppeling toe of test weigering. Bij succes verschijnt “Profile request succeeded.” Het token wordt daarna ingetrokken. Start het script opnieuw voor een nieuwe poging; de listener verloopt na tien minuten.

Aanpassen voor een uitgebrachte app

Gebruik de authenticatiebrowser en het callbackmechanisme van het besturingssysteem. Plaats aanmelden niet in een WebView en lever geen backendgeheim mee. PKCE bindt de code aan de appinstantie die begon. Zie OAuth voor native apps, RFC 8252.

Registreer op mobiel geclaimde HTTPS-adressen of beoordeelde omgekeerde domeinschema’s. Gebruik op Apple-platforms ASWebAuthenticationSession met presentatiecontext en geregistreerde callback. Behoud controles voor state, issuer, verifier en eenmalig transactiegebruik.

Vraag voor blijvende koppelingen expliciet offline_access en bewaar tokens in de beveiligde opslag van het systeem. Vernieuw achtereenvolgens en sla vervangingen atomair op volgens de OAuth-regels. Houd callbacks en tokens uit crashrapporten en logs.

Op deze pagina