OAuth2-authenticatie
Deze tekst is vertaald met AI. Als je de originele tekst in het Engels wilt bekijken, klik dan hier.
Met OAuth2 kunnen applicaties veilig toegang krijgen tot WordPress.com- en Jetpack-sites zonder dat ze de wachtwoorden van gebruikers nodig hebben. Het biedt nauwkeurige controle over waar elke app toegang toe heeft.
Met OAuth2 kunnen apps alleen de specifieke rechten aanvragen die ze nodig hebben via “scopes”. Wanneer gebruikers een app autoriseren, kunnen ze precies zien en bepalen welke toegang ze verlenen.
Gebruikers loggen in met hun WordPress.com-account en kunnen de aangevraagde rechten goedkeuren of weigeren, zodat ze controle houden over hun gegevens terwijl ze apps veilig koppelen.
Op zoek naar codevoorbeelden? Bekijk de WordPress.com REST API Examples-repository, die voorbeeldprojecten bevat die OAuth-authenticatie en API-gebruik in verschillende programmeertalen en frameworks demonstreren. De repository bevat voorbeelden van zowel OAuth-gebaseerde authenticatie voor door gebruikers geautoriseerde bewerkingen als Application Password-authenticatie voor directe toegang tot API-endpoints.
Vereisten
Voordat je je OAuth2-applicatie ontwikkelt, moet je een WordPress.com-applicatie hebben geregistreerd met de volgende gegevens:
- Client ID: Identificeert je applicatie
- Client Secret: Authenticeert je applicatie (bewaar veilig)
- Redirect URI: Waar gebruikers terugkeren na autorisatie
Je kunt deze inloggegevens verkrijgen via de WordPress.com Applications Manager.
Gebruik dit formulier om een nieuwe WordPress.com-applicatie te registreren
OAuth2-endpoints
Als OAuth2 nieuw voor je is, kun je meer leren op https://oauth.net/. Voor WordPress.com-integratie moet je de belangrijkste OAuth2-endpoints begrijpen die beschikbaar zijn onder de namespace https://public-api.wordpress.com/oauth2/. Deze endpoints werken consistent voor zowel WordPress.com-sites als sites die met Jetpack zijn verbonden.
Autorisatie-endpoint
Endpoint: https://public-api.wordpress.com/oauth2/authorize
Methode: GET (via gebruikers-redirect)
Hier begint de OAuth2-flow. Gebruikers krijgen een autorisatie-interface te zien om de machtigingen die je applicatie aanvraagt te controleren en goed te keuren. Het endpoint valideert de inloggegevens van je applicatie en de redirect-URI, en genereert veilige autorisatiecodes voor tokenuitwisseling.
Vereiste parameters:
client_id: De client-ID van je applicatieredirect_uri: Moet overeenkomen met de geregistreerde redirect-URIresponse_type: “code” voor autorisatiecodeflow of “token” voor impliciete flow
Optionele parameters:
scope: Machtigingen gescheiden door spaties (standaard toegang tot één blog)state: Aanbevolen voor CSRF-beschermingblog: Specifieke blog-URL of ID voor toegang tot één site
Voorbeeld van autorisatie-URL (autorisatiecodeflow):
https://public-api.wordpress.com/oauth2/authorize?client_id=12345&redirect_uri=https%3A%2F%2Fyourapp.com%2Fcallback&response_type=code&scope=posts%20media&state=abc123xyz
Voorbeeld van autorisatie-URL (impliciete flow):
https://public-api.wordpress.com/oauth2/authorize?client_id=12345&redirect_uri=https%3A%2F%2Fyourapp.com%2Fcallback&response_type=token&scope=posts%20media&state=abc123xyz
Voorbeeld van autorisatie-URL (specifieke blog):
https://public-api.wordpress.com/oauth2/authorize?client_id=12345&redirect_uri=https%3A%2F%2Fyourapp.com%2Fcallback&response_type=code&blog=yourblog.wordpress.com&scope=posts%20media&state=abc123xyz
Respons/actie: Na goedkeuring door de gebruiker wordt er omgeleid naar je redirect_uri met:
- Autorisatiecodeflow:
?code=AUTHORIZATION_CODE&state=YOUR_STATE - Impliciete flow:
#access_token=TOKEN&expires_in=64800&token_type=bearer&site_id=BLOG_ID - Weigering door gebruiker:
?error=access_denied
Belangrijke opmerking: De parameter redirect_uri moet exact overeenkomen met de redirect URI die is geregistreerd bij het maken van je applicatie. Zelfs kleine verschillen (zoals ontbrekende afsluitende slashes) zorgen ervoor dat de autorisatie mislukt. Dit is een beveiligingsmaatregel om schadelijke redirects te voorkomen.
Endpoint voor tokenaanvraag
Endpoint: https://public-api.wordpress.com/oauth2/token
Methode: POST
Dit beveiligde server-naar-server-endpoint verwerkt twee verschillende grant types voor het verkrijgen van access tokens. Kies het juiste grant type op basis van je gebruikssituatie:
Authorization Code Grant (productiegebruik)
Gebruik dit grant type voor alle productietoepassingen. Het wisselt autorisatiecodes (ontvangen via gebruikersautorisatie) in voor access tokens, terwijl je client secret veilig blijft.
Vereiste parameters:
client_id: De client-ID van je toepassingclient_secret: De client secret van je toepassingcode: Autorisatiecode uit de autorisatiestapgrant_type: Moet “authorization_code” zijnredirect_uri: Moet overeenkomen met de authorization redirect URI
Voorbeeldaanvraag:
curl -X POST https://public-api.wordpress.com/oauth2/token
-d "client_id=12345"
-d "client_secret=your_client_secret"
-d "code=received_authorization_code"
-d "grant_type=authorization_code"
-d "redirect_uri=https://yourapp.com/callback"curl -X POST https://public-api.wordpress.com/oauth2/token
-d “client_id=12345”
-d “client_secret=your_client_secret”
-d “code=received_authorization_code”
-d “grant_type=authorization_code”
-d “redirect_uri=https://yourapp.com/callback”Password Grant (alleen ontwikkeling en testen)
Met dit granttype kunnen applicatie-eigenaren tokens rechtstreeks verkrijgen met hun WordPress.com-inloggegevens, waarbij de gebruikersautorisatiestroom wordt overgeslagen.
Gebruik Password Grant voor:
- Het testen van API-endpoints tijdens de ontwikkeling
- Geautomatiseerd testen waarbij het simuleren van gebruikersautorisatie niet praktisch is
- Persoonlijke ontwikkeling op je eigen WordPress.com-sites
Beveiligingsbeperkingen:
- Werkt alleen met je eigen WordPress.com-inloggegevens (niet die van andere gebruikers)
- Vereist dat je inloggegevens in je code blootstelt
- Slaat de gebruikerstoestemming en beveiligingsvoordelen van OAuth2 over
- Gebruik dit nooit in productieapplicaties
Vereiste parameters:
client_id: De client-ID van je applicatieclient_secret: Het clientgeheim van je applicatiegrant_type: Moet “password” zijnusername: Je WordPress.com-gebruikersnaampassword: Je WordPress.com-wachtwoord (of Applicatiewachtwoord als 2FA is ingeschakeld)
Voorbeeldaanvraag:
curl -X POST https://public-api.wordpress.com/oauth2/token
-d "client_id=12345"
-d "client_secret=your_client_secret"
-d "grant_type=password"
-d "username=your_username"
-d "password=your_password_or_app_password"curl -X POST https://public-api.wordpress.com/oauth2/token
-d “client_id=12345”
-d “client_secret=your_client_secret”
-d “grant_type=password”
-d “username=your_username”
-d “password=your_password_or_app_password”Tweefactorauthenticatie: Als je 2FA hebt ingeschakeld, maak je een applicatiewachtwoord aan in je WordPress.com-accountinstellingen en gebruik je dat in plaats van je gewone wachtwoord.
Migratiepad: Begin met Password Grant voor ontwikkelgemak, maar implementeer Authorization Code Flow voordat je naar productie gaat. Zie Password Grant als een ontwikkelsnelkoppeling die in live applicaties moet worden vervangen door correcte gebruikersautorisatie.
Indeling van tokenrespons (beide Grant Types):
{
"access_token": "YOUR_API_TOKEN",
"blog_id": "blog_id_number",
"blog_url": "https://yourblog.wordpress.com",
"token_type": "bearer"
}{
“access_token”: “YOUR_API_TOKEN”,
“blog_id”: “blog_id_number”,
“blog_url”: “https://yourblog.wordpress.com”,
“token_type”: “bearer”
}Endpoint voor tokeninformatie
Endpoint: https://public-api.wordpress.com/oauth2/token-info
Methode: GET
Biedt veilige tokenvalidatie en -inspectie. Retourneert gedetailleerde informatie over tokens, inclusief gebruikers-ID, blog-ID en scope-machtigingen. Essentieel om de authenticiteit van tokens te verifiëren, vooral wanneer tokens tussen systemen of in mobiele applicaties worden verzonden.
Vereiste parameters:
client_id: De client-ID van je applicatietoken: Het access token dat je wilt valideren
Voorbeeldaanvraag:
GET https://public-api.wordpress.com/oauth2/token-info?client_id=12345&token=your_access_token_here
Voorbeeld-CURL-request:
curl "https://public-api.wordpress.com/oauth2/token-info?client_id=12345&token=your_access_token_here"
Reactie-indeling (geldig token):
{
"client_id": "12345",
"user_id": "123456789",
"blog_id": "987654321",
"scope": "posts,media"
}{
“client_id”: “12345”,
“user_id”: “123456789”,
“blog_id”: “987654321”,
“scope”: “posts,media”
}Reactie (ongeldig token): retourneert een fout als het token niet is geautoriseerd voor je applicatie of ongeldig is.
Authenticatie-eindpunt
Eindpunt: https://public-api.wordpress.com/oauth2/authenticate
Methode: GET (via gebruikersredirect)
Een gespecialiseerd eindpunt voor WordPress.com Connect-applicaties die alleen basisverificatie van de gebruikersidentiteit nodig hebben. Geoptimaliseerd voor de functionaliteit ‘Inloggen met WordPress.com’, ontworpen voor identiteitsverificatie in plaats van contentbeheer.
Vereiste parameters:
client_id: De client-ID van je applicatieredirect_uri: Moet overeenkomen met de geregistreerde Redirect URIresponse_type: Gebruik “code” voor veilige uitwisseling aan serverzijde
Optionele parameters:
scope: Meestal “auth” voor toegang tot basisprofielgegevensstate: Aanbevolen voor CSRF-bescherming
Voorbeeld-URL voor authenticatie:
https://public-api.wordpress.com/oauth2/authenticate?client_id=12345&redirect_uri=https%3A%2F%2Fyourapp.com%2Fauth-callback&response_type=code&scope=auth&state=random_secure_string
Reactie/actie: Na goedkeuring door de gebruiker wordt er omgeleid naar je redirect_uri met een autorisatiecode. Wissel deze code uit bij het token-endpoint om een token met beperkte scope te ontvangen, waarmee doorgaans alleen toegang wordt geboden tot:
Beschikbare API-toegang:
/me/-endpoint voor basisinformatie over het gebruikersprofiel- Gegevens voor verificatie van gebruikersidentiteit (ID, username, email, avatar_URL, verified status)
OAuth2-workflows
WordPress.com ondersteunt twee belangrijke OAuth2-workflows, elk ontworpen voor verschillende applicatietypen en beveiligingsvereisten:
Authorization Code Flow (aanbevolen)
De Authorization Code Flow is de standaard OAuth2-workflow voor server-side applicaties waarin je client secrets veilig kunt opslaan. Deze flow biedt de hoogste beveiliging door een autorisatiecode in te wisselen voor een access token via een beveiligd server-naar-serververzoek.
Beveiligingsvoordeel: Het client secret verschijnt nooit in client-side code en access tokens worden verkregen via geauthenticeerde serververzoeken.

Implicit Flow (verouderd)
De Implicit Flow is ontworpen voor browsergebaseerde applicaties waarbij de access token rechtstreeks in het URL-fragment wordt geretourneerd. Deze aanpak wordt tegenwoordig echter als minder veilig beschouwd en is grotendeels vervangen door veiligere alternatieven zoals PKCE (Proof Key for Code Exchange).
Belangrijk: We raden aan om waar mogelijk de Authorization Code Flow te gebruiken voor betere beveiliging.

OAuth2-scopes en machtigingen
De kracht van OAuth2 ligt in het gedetailleerde machtigingensysteem. Wanneer je autorisatie aanvraagt, geef je scopes op die precies bepalen waartoe je applicatie toegang krijgt.
Beschikbare scopes
- users: Gebruikersinformatie bekijken
- sites: Algemene site-informatie en opties bekijken
- posts: Berichten bekijken en beheren
- comments: Reacties op berichten bekijken en beheren
- taxonomy: Tags en categorieën bekijken en beheren
- follow: Blogs volgen en niet meer volgen
- sharing: Socialmediadiensten koppelen
- freshly-pressed: Berichten van vers van de pers bekijken
- notifications: Gebruikersmeldingen bekijken en beheren
- insights: Analytics voor je applicatie bekijken
- read: Reader-abonnementen beheren en bekijken
- stats: Sitestatistieken bekijken
- media: Sitemedia beheren
- menus: Sitemenu’s bekijken en beheren
- batch: Meerdere GET-verzoeken in batches uitvoeren
- videos: Video-informatie bekijken
Speciale scopes
- global: Verleent uitgebreide toegang tot gebruikersgegevens in alle WordPress.com-diensten en gekoppelde sites
- auth: Beperkte scope die alleen toegang biedt tot het
/me/-endpoint voor basis-authenticatiestromen. Zie WordPress.com Connect voor meer gerelateerde informatie.
Best practices voor scopes
Volg altijd het principe van minimale rechten:
// Request only necessary permissions
const scopes = 'posts,media'; // Not 'global' unless truly needed// Request only necessary permissions
const scopes = ‘posts,media’; // Not ‘global’ unless truly neededOAuth2-authenticatie implementeren
Stap 1: autorisatieverzoek
Stuur gebruikers naar het autorisatie-endpoint met de vereiste parameters:
Vereiste parameters
client_id: De client-ID van je applicatieredirect_uri: Moet overeenkomen met de URI die is geregistreerd in de instellingen van je applicatieresponse_type: Gebruik “code” voor de autorisatiecode-flow of “token” voor de impliciete flow
Optionele parameters
blog: Specifieke blog-URL of ID voor toegang tot één sitescope: Lijst met aangevraagde machtigingen, gescheiden door spatiesstate: Aanbevolen beveiligingsparameter om CSRF-aanvallen te voorkomen
Voorbeeld van autorisatie-URL
const authUrl = `https://public-api.wordpress.com/oauth2/authorize?` +
`client_id=${clientId}&` +
`redirect_uri=${encodeURIComponent(redirectUri)}&` +
`response_type=code&` +
`scope=posts,media&` +
`state=${secureRandomString}`;
// // Redirect user to authorization
window.location.href = authUrl;const authUrl = `https://public-api.wordpress.com/oauth2/authorize?` +
`client_id=${clientId}&` +
`redirect_uri=${encodeURIComponent(redirectUri)}&` +
`response_type=code&` +
`scope=posts,media&` +
`state=${secureRandomString}`;
// // Redirect user to authorization
window.location.href = authUrl;Stap 2: uitwisseling van autorisatiecode
Na gebruikersautorisatie ontvang je (op de locatie van redirect_url) een autorisatiecode die moet worden ingewisseld voor een toegangstoken.
Server-side tokenuitwisseling
Doe een POST-aanvraag naar het token-endpoint:
$curl = curl_init( 'https://public-api.wordpress.com/oauth2/token' );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, array(
'client_id' => $your_client_id,
'redirect_uri' => $your_redirect_url,
'client_secret' => $your_client_secret_key,
'code' => $_GET['code'], // The authorization code
'grant_type' => 'authorization_code'
) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
$auth = curl_exec( $curl );
$secret = json_decode( $auth );
$access_token = $secret->access_token;$curl = curl_init( ‘https://public-api.wordpress.com/oauth2/token’ );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, array(
‘client_id’ => $your_client_id,
‘redirect_uri’ => $your_redirect_url,
‘client_secret’ => $your_client_secret_key,
‘code’ => $_GET[‘code’], // The authorization code
‘grant_type’ => ‘authorization_code’
) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
$auth = curl_exec( $curl );
$secret = json_decode( $auth );
$access_token = $secret->access_token;Geslaagde respons
{
"access_token": "YOUR_API_TOKEN",
"blog_id": "blog_id_number",
"blog_url": "https://yourblog.wordpress.com",
"token_type": "bearer"
}{
“access_token”: “YOUR_API_TOKEN”,
“blog_id”: “blog_id_number”,
“blog_url”: “https://yourblog.wordpress.com”,
“token_type”: “bearer”
}Stap 3: geauthenticeerde API-aanroepen doen
Gebruik het Bearer-token in de Authorization-header voor alle API-aanvragen:
$access_token = 'YOUR_API_TOKEN';
$curl = curl_init( 'https://public-api.wordpress.com/rest/v1/me/' );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( 'Authorization: Bearer ' . $access_token ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$response = curl_exec( $curl );$access_token = ‘YOUR_API_TOKEN’;
$curl = curl_init( ‘https://public-api.wordpress.com/rest/v1/me/’ );
curl_setopt( $curl, CURLOPT_HTTPHEADER, array( ‘Authorization: Bearer ‘ . $access_token ) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );
$response = curl_exec( $curl );Geavanceerde OAuth2-functies
Beheer van token-scopes
Verschillende token-scopes bieden verschillende toegangsniveaus:
- Tokens voor één blog: Geven toegang tot één specifieke blog
- Globale tokens: Bieden toegang tot alle WordPress.com- en gekoppelde Jetpack-sites van de gebruiker
- Gebruikersspecifieke endpoints: Sommige endpoints (likes, follows) werken over blogs heen met elke gebruikerstoken
Client-side (impliciete) OAuth
Voor client-side applicaties kunnen tokens worden teruggegeven in het URL-fragment met de impliciete flow:
https://yourapp.com/callback#access_token=TOKEN&expires_in=64800&token_type=bearer&site_id=BLOG_ID
Belangrijke aandachtspunten:
- Tokens verlopen momenteel na twee weken
- Gebruik de waarde expires_in om tokenvernieuwing af te handelen
- Alleen geschikt voor openbare clients waar secrets niet veilig kunnen worden opgeslagen
Tokenvalidatie en -beheer
Het correct beheren van OAuth2-tokens is cruciaal voor een robuuste applicatie. Dit omvat het valideren van tokens, het afhandelen van API-responses en het zorgvuldig beheren van tokenverloop of onvoldoende rechten.

Endpoint voor tokeninformatie
Controleer de authenticiteit van het token met het endpoint voor tokeninformatie:
GET https://public-api.wordpress.com/oauth2/token-info?client_id=your_client_id&token=your_token
Geldige response:
{
"client_id": "your_client_id",
"user_id": "user_id_number",
"blog_id": "blog_id_number",
"scope": "posts,media"
}{
“client_id”: “your_client_id”,
“user_id”: “user_id_number”,
“blog_id”: “blog_id_number”,
“scope”: “posts,media”
}Ontwikkeling en testen
Testen met Password Grant (alleen clienteigenaren)
Applicatie-eigenaren kunnen de password grant gebruiken om het authenticatietoken te verkrijgen:
$curl = curl_init( 'https://public-api.wordpress.com/oauth2/token' );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, array(
'client_id' => $your_client_id,
'client_secret' => $your_client_secret_key,
'grant_type' => 'password',
'username' => $your_wpcom_username,
'password' => $your_wpcom_password, // Use Application Password if 2FA enabled
) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
$auth = curl_exec( $curl );
$auth = json_decode( $auth );
$access_token = $auth->access_token;$curl = curl_init( ‘https://public-api.wordpress.com/oauth2/token’ );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, array(
‘client_id’ => $your_client_id,
‘client_secret’ => $your_client_secret_key,
‘grant_type’ => ‘password’,
‘username’ => $your_wpcom_username,
‘password’ => $your_wpcom_password, // Use Application Password if 2FA enabled
) );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1);
$auth = curl_exec( $curl );
$auth = json_decode( $auth );
$access_token = $auth->access_token;Belangrijk: Voor deze methode is een Applicatiewachtwoord vereist als tweefactorauthenticatie is ingeschakeld.
Best practices voor beveiliging en foutafhandeling
Implementatierichtlijnen
- Validatie van de state-parameter: Valideer de state-parameter altijd om CSRF-aanvallen te voorkomen
- Veilige tokenopslag: Sla toegangstokens veilig op met passende versleuteling
- Minimale scope-aanvragen: Vraag alleen de rechten aan die je applicatie echt nodig heeft
- Duidelijke communicatie met gebruikers: Leg uit waarom specifieke rechten vereist zijn
- Correcte foutafhandeling: Handel autorisatiefouten, verlopen tokens en scope-wijzigingen netjes af
HTTPS-vereisten
Alle OAuth2-communicatie moet HTTPS gebruiken om tokens en autorisatiecodes tijdens de overdracht te beschermen.
Tokenbeheer
- Sla toegangstokens veilig op aan de serverzijde
- Implementeer geschikte mechanismen voor het vernieuwen van tokens
- Bied duidelijke documentatie over de levenscyclus van tokens
- Handel verlopen tokens netjes af in je applicatie
Foutafhandeling
Veelvoorkomende OAuth2-fouten en hun betekenis:
- access_denied: Gebruiker heeft autorisatie geweigerd
- invalid_client: Ongeldige clientreferenties
- invalid_grant: Ongeldige of verlopen autorisatiecode
- invalid_scope: Aangevraagd bereik is ongeldig of niet beschikbaar
Implementeer altijd uitgebreide foutafhandeling om gebruikers duidelijke feedback te geven wanneer er autorisatieproblemen optreden.
Conclusie
OAuth2 biedt een veilige, gebruiksvriendelijke authenticatiemethode voor WordPress.com-integraties. Door goed bereikbeheer, beveiligingspraktijken en foutafhandeling te implementeren, kun je applicaties bouwen die de privacy van gebruikers respecteren en tegelijk krachtige functionaliteit bieden. Het fijnmazige machtigingensysteem zorgt ervoor dat gebruikers controle houden over hun gegevens, terwijl je applicatie waardevolle functies kan leveren.
Ga voor volledige documentatie van API-endpoints en aanvullende voorbeelden naar de WordPress.com REST API-referentie.
Laatste update: juni 23, 2026