Met OAuth kunnen andere klanten uw app verbinden met hun werkruimte zonder een API-sleutel te delen. De klant meldt zich aan bij uw account, bekijkt wat uw app vraagt en keurt dit goed. Uw app ontvangt een toegangstoken voor de REST API van uw account, dat de klant op elk moment kan intrekken. Dit artikel beschrijft hoe u uw app registreert, de OAuth 2.0-autorisatiecodeflow uitvoert met PKCE, tokens vernieuwt en fouten afhandelt.
Wanneer gebruik je OAuth in plaats van een API-sleutel?
| OAuth-toegangstoken | Workspace API-sleutel | |
|---|---|---|
| Gebruik het voor | Een app waarmee andere Notiondesk klanten verbinding maken: een SaaS-product, een marktplaatsintegratie, een rapportagetool | Automatisering die je uitvoert voor je eigen werkruimte: een script, een geplande taak, een CI-stap. |
| Wie maakt het? | De klant keurt uw app goed. | Je kunt dit doen via Instellingen > Ontwikkelaars > API-sleutels. |
| Levensduur | Toegangstoken: 1 uur. Vernieuwingstoken: 30 dagen, wordt bij elke vernieuwing vernieuwd. | Totdat het verloopt, wordt geroteerd of wordt ingetrokken. |
| Ingetrokken van | Instellingen > Ontwikkelaars > Verbonden apps | Instellingen > Ontwikkelaars > API-sleutels |
Elke API-route van het type Notiondesk accepteert beide soorten inloggegevens en beantwoordt ze op dezelfde manier: met dezelfde scopes, reacties en fouten.
Wat uw app moet weten
| Item | Waarde |
|---|---|
| Autorisatieservermetadata | https://api.notiondesk.so/.well-known/oauth-authorization-server |
| Autorisatie-eindpunt | https://api.notiondesk.so/oauth/authorize |
| Token-eindpunt | https://api.notiondesk.so/oauth/token |
| Clientregistratie-eindpunt | https://api.notiondesk.so/oauth/register |
| Bron | https://api.notiondesk.so |
| Scopes | __GERESERVEERD_72__, __GERESERVEERD_71__, __GERESERVEERD_70__, __GERESERVEERD_69__ |
| Subsidietypen | __GEVANGEN_68__ met PKCE, en __GEVANGEN_67__ |
| PKCE-methode | __GERESERVEERD_66__ alleen |
Lees de eindpunten uit het metadatadocument van de autorisatieserver in plaats van ze vast te coderen.
Stap 1: Registreer je app
Registreer eenmalig met dynamische klantregistratie :
Het 201 Created antwoord bevat uw client_id en, omdat u om client_secret_post hebt gevraagd, ook een client_secret. Het geheim wordt eenmaal weergegeven: bewaar het bij uw andere servergeheimen.
Met "token_endpoint_auth_method": "none" is uw app een openbare client zonder geheim, en PKCE beschermt de uitwisseling van code.
In plaats van te registreren, kunt u de HTTPS-URL van een clientmetadatadocument gebruiken als uw client_id. Notiondesk haalt het document op wanneer een klant uw app autoriseert en bewaart het maximaal vijf minuten in de cache.
Omleidings-URI-regels
curl -X POST "https://api.notiondesk.so/oauth/register" \
-H "Content-Type: application/json" \
-d '{"client_name": "Acme Reports", "redirect_uris": ["https://acme.example/oauth/callback"], "token_endpoint_auth_method": "client_secret_post"}'- Gebruik
httpsofhttpop een loopback-host:127.0.0.1,localhostof[::1].
- Een loopback-redirect werkt op elke poort. Elke andere redirect moet exact overeenkomen.
- Jokertekens, fragmenten, referenties vóór de host (
user@), backslashes, niet-ASCII-tekens en in procenten gecodeerde hosts worden geweigerd.
- De host die een klant op het toestemmingsscherm ziet, is afkomstig van uw redirect-URI's of uw
client_id-URL. Registreer alleen hosts die u zelf bezit.
Stap 2: Stuur de klant door naar Notiondesk
Genereer een willekeurige code_verifier en leid vervolgens de code_challenge af als de SHA-256-hash van de verificator, gecodeerd in base64url ( PKCE ). Leid de browser van de klant door naar:
https://api.notiondesk.so/oauth/authorize
?response_type=code
&client_id=YOUR_CLIENT_ID
&redirect_uri=https%3A%2F%2Facme.example%2Foauth%2Fcallback
&scope=read%20write
&state=RANDOM_STATE
&code_challenge=YOUR_CODE_CHALLENGE
&code_challenge_method=S256
&resource=https%3A%2F%2Fapi.notiondesk.soresourceis vereist en moet exacthttps://api.notiondesk.sozijn: kleine letters, geen schuine streep aan het einde, geen pad. Een ontbrekende of afwijkende waarde resulteert ininvalid_request.
scopeis een lijst met spaties als scheidingstekens. Vraag alleen naar de scopes die uw app gebruikt.
statebeschermt tegen cross-site request forgery. Controleer dit wanneer de klant terugkomt.
Een token dat is uitgegeven voor de REST API Notiondesk werkt alleen met de REST API. Een token dat is uitgegeven voor Workspace MCP wordt door de REST API geweigerd, en omgekeerd.
Stap 3: De klant keurt uw app goed.
Notiondesk toont het toestemmingsscherm. De klant meldt zich aan en ziet de naam en host van uw app, zijn of haar werkruimte en de scopes van uw verzoek die zijn of haar rol toestaat. De klant kan het hele verzoek goedkeuren of afwijzen.
De scopes die uw app kan ontvangen, zijn afhankelijk van de rol van de klant in de werkruimte:
| Rol van de klant | Bereiken die uw app kan ontvangen |
|---|---|
| Kijker of factureringsbeheerder | read |
| Editor | __GERESERVEERD_44__, __GERESERVEERD_43__, __GERESERVEERD_42__ |
| Beheerder of eigenaar van de werkruimte | __GERESERVEERD_41__, __GERESERVEERD_40__, __GERESERVEERD_39__, __GERESERVEERD_38__ |
Met admin kan uw app de huisstijl van het helpcentrum wijzigen, integraties configureren waarvan de scripts worden geladen in het openbare helpcentrum en omleidingen verwijderen. Vraag deze optie alleen aan als uw app deze routes gebruikt.
De klant kan het verzoek niet goedkeuren wanneer:
- Hun rol biedt geen van de mogelijkheden waar u om gevraagd heeft;
- Hun werkruimte heeft geen API-toegang. Op het toestemmingsscherm verschijnt vervolgens de melding: "Het werkruimteabonnement omvat geen API-toegang." API-toegang vereist een Enterprise-abonnement.
Na goedkeuring keert de browser terug naar uw redirect_uri met een code, uw state en iss, de identificatiecode van de Notiondesk autorisatieserver. Als de klant de toegang weigert, wordt in plaats daarvan error=access_denied meegestuurd.
Stap 4: Wissel de code in voor tokens
De code is 60 seconden geldig en werkt eenmalig:
Laat client_secret weg voor een publieke klant. Het antwoord:
scope geeft een overzicht van de scopes die de klant heeft toegekend. Dit kunnen er minder zijn dan u hebt aangevraagd. Bewaar beide tokens op uw server.
Stap 5: Roep de Notiondesk API aan
Verzend het toegangstoken als een bearer-token, net zoals een API-sleutel:
De reikwijdte van het token is beperkt tot de huidige rol van de goedkeurende klant: een klant die is gewijzigd naar Viewer verlaat uw app alleen met read, en een route die een ontbrekende reikwijdte nodig heeft, geeft een 403 insufficient_scope-antwoord.
De budgetten voor tariefbeperkingen en de Idempotency-Key-waarden behoren tot de subsidie. Elke goedkeuring is een nieuwe subsidie met eigen budgetten en sleutels, en een tokenvernieuwing behoudt beide.
Stap 6: Vernieuw het toegangstoken
Een toegangstoken is één uur geldig. Wissel het vernieuwingstoken in voor een nieuw paar tokens voordat het verloopt:
Bij elke vernieuwing wordt een nieuw vernieuwingstoken geretourneerd dat 30 dagen geldig is en het door u verzonden token ongeldig maakt. Bewaar het nieuwe vernieuwingstoken voordat u het nieuwe toegangstoken gebruikt.
curl -X POST "https://api.notiondesk.so/oauth/token" \
-d grant_type=authorization_code \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d code=THE_CODE \
-d code_verifier=YOUR_CODE_VERIFIER \
-d redirect_uri=https://acme.example/oauth/callback{
"access_token": "eyJ...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "8f3c...",
"scope": "read write"
}curl "https://api.notiondesk.so/sites" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "nd-version: 2026-10-16"curl -X POST "https://api.notiondesk.so/oauth/token" \
-d grant_type=refresh_token \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d refresh_token=THE_REFRESH_TOKENHoe klanten uw app kunnen intrekken
Eigenaren en beheerders van werkruimtes zien alle apps met toegang tot hun werkruimte onder Instellingen > Ontwikkelaars > Verbonden apps . Apps die de REST API gebruiken, tonen 'REST API' in de kolom 'Toegang' , samen met de app, de persoon die de autorisatie heeft verleend, de scopes en de laatste activiteit. Het intrekken van de toegang beëindigt de machtiging onmiddellijk: het toegangstoken en het vernieuwingstoken werken niet meer bij het volgende verzoek.
Een subsidie eindigt ook vanzelf:
- na 30 dagen zonder vernieuwing;
- wanneer het vernieuwingstoken opnieuw wordt gebruikt.
Als de goedkeurende klant niet over de vereiste rol voor een route beschikt, of als het werkruimteplan geen API-toegang heeft, worden aanvragen geweigerd. Ze werken weer als de rol of het plan wordt hersteld voordat de toekenning verloopt.
Probleemoplossing Notiondesk OAuth
De autorisatie- en token-eindpunten reageren met standaard OAuth-fouten, niet met de API-foutcode Notiondesk:
{"error": "invalid_grant", "error_description": "Invalid authorization code."}error | Status | Wanneer |
|---|---|---|
invalid_request | 400 | Een parameter ontbreekt of is ongeldig: een onbekende resource, een ontbrekende PKCE-uitdaging, een niet-geregistreerde redirect_uri, een onbekende client op het autorisatie-eindpunt of een niet-ondersteunde grant_type. |
invalid_client | 401 | Het clientgeheim ontbreekt of is onjuist. |
invalid_grant | 400 | De code of het vernieuwingstoken is onbekend, verlopen, reeds gebruikt of ingetrokken, de code_verifier of redirect_uri komt niet overeen, of het token-eindpunt kent de client niet. |
server_error | 500 | Notiondesk mislukt; probeer het later opnieuw |
Het autorisatie-eindpunt toont deze fouten zelf en stuurt een ongeldig verzoek nooit door naar uw redirect_uri. Een geweigerde toestemming bereikt uw app alleen als de error=access_denied redirect.
Aanroepen naar de API zelf beantwoorden met de API-foutcode Notiondesk . Een verlopen of ingetrokken toegangstoken beantwoordt met 401 authentication_error met de melding "Ongeldige of ontbrekende API-sleutel.", dezelfde melding die een onbruikbare API-sleutel krijgt.
Veelgestelde vragen
Kan ik de Notiondesk API aanroepen vanuit een single-page applicatie met OAuth?
Nee. Browsergebaseerde clients worden niet ondersteund. Voer de OAuth-flow en elke API-aanroep uit op uw server en houd tokens buiten de browser.
Hoe lang is een Notiondesk toegangstoken geldig?
Een uur. Vernieuw het met het vernieuwingstoken, dat 30 dagen geldig is en bij elke vernieuwing wordt vervangen. Een toekenning die 30 dagen niet wordt vernieuwd, vervalt.
Kan mijn OAuth-app Workspace MCP gebruiken?
Nee. Een token dat is uitgegeven voor de REST API, met resource=https://api.notiondesk.so, wordt geweigerd door Workspace MCP. Workspace MCP geeft zijn eigen tokens uit aan AI-clients.
Waarom heeft mijn app minder scopes ontvangen dan aangevraagd?
De rol van de klant in de werkruimte beperkt de mogelijkheden. Een editor kan read, write en sync toekennen, maar niet admin. Het veld scope in het tokenantwoord geeft aan welke rechten zijn toegekend.