OAuth 2.1

Revocación de tokens (RFC 7009)

Revoca access tokens o refresh tokens activos de forma inmediata.

El endpoint de revocación (RFC 7009) permite invalidar un token activo. Es idempotente: siempre devuelve 200 OK aunque el token no exista o ya estuviera revocado.

Endpoint

POST https://app.whatalo.com/oauth/revoke
Content-Type: application/x-www-form-urlencoded

Autenticación requerida

Los clientes confidenciales deben autenticarse con HTTP Basic o body params:

POST /oauth/revoke
Content-Type: application/x-www-form-urlencoded
Authorization: Basic BASE64(client_id:client_secret)

token=EL_TOKEN_A_REVOCAR
&token_type_hint=refresh_token

Los clientes públicos solo envían client_id sin secreto:

token=EL_TOKEN_A_REVOCAR
&client_id=abc123def456ghi789jkl012
&token_type_hint=access_token

Parámetros

ParámetroRequeridoDescripción
tokenEl token a revocar (access token o refresh token)
token_type_hintNoaccess_token o refresh_token — sugerencia para acelerar la búsqueda interna

Respuesta

HTTP/1.1 200 OK

No hay cuerpo de respuesta. 200 OK se devuelve siempre, incluso si el token no existía.

Caso de uso principal: cierre de sesión

Cuando el usuario cierra sesión en tu app, revoca tanto el access_token como el refresh_token:

async function logout(accessToken, refreshToken, clientId, clientSecret) {
  const credentials = Buffer.from(`${clientId}:${clientSecret}`)
    .toString("base64");
  const headers = {
    "Content-Type": "application/x-www-form-urlencoded",
    "Authorization": `Basic ${credentials}`,
  };

  // Revoke both tokens — order doesn't matter
  await Promise.all([
    fetch("https://app.whatalo.com/oauth/revoke", {
      method: "POST",
      headers,
      body: new URLSearchParams({
        token: accessToken,
        token_type_hint: "access_token",
      }),
    }),
    fetch("https://app.whatalo.com/oauth/revoke", {
      method: "POST",
      headers,
      body: new URLSearchParams({
        token: refreshToken,
        token_type_hint: "refresh_token",
      }),
    }),
  ]);
}

Revocación en cascada desde Whatalo

Nota crítica para integraciones: cuando un comerciante revoca una app conectada desde la interfaz de ajustes de Whatalo, todos los access_token y refresh_token de esa combinación (cliente, usuario, tienda) se revocan de forma atómica e inmediata.

Si tu Resource Server cachea respuestas active: true del endpoint de introspección por más de 60 segundos, seguirá aceptando tokens revocados durante ese intervalo.

Efecto en introspección después de la revocación

Inmediatamente después de revocar un token, el endpoint de introspección devuelve:

{ "active": false }

Incluso si el token no hubiera expirado aún.

Frecuencia recomendada de caché

Respuesta de introspecciónTTL de caché recomendado
active: trueMáximo 60 segundos
active: falseNo cachear

Esto garantiza que una revocación iniciada por el usuario tenga efecto en tu sistema en menos de un minuto.

On this page