> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# flujo de Login Back-Channel - Comprobación de estado

> Sondee el endpoint de token para comprobar el estado de una solicitud pendiente de Login Back-Channel.

<div id="endpoint">
  ## Endpoint
</div>

`POST /oauth/token`

Para comprobar el estado de un flujo de Login Back-Channel, sondee el endpoint `/oauth/token` a intervalos regulares pasando lo siguiente:

* `auth_req_id` devuelto por la llamada a `/bc-authorize`
* el grant type `urn:openid:params:grant-type:ciba`

<div id="response-body">
  ### Cuerpo de la respuesta
</div>

Si el usuario que autoriza aún no ha aprobado ni rechazado la solicitud, debería recibir una respuesta como la siguiente:

```http theme={null}
{ 
  "error": "authorization_pending", 
  "error_description": "The end-user authorization is pending"
}
```

Si el usuario autorizante rechaza la solicitud, debería recibir una respuesta como la siguiente:

```http theme={null}
{
  "error": "access_denied",
  "error_description": "The end-user denied the authorization request or it has been expired"
}
```

Si está realizando sondeos demasiado rápido (a una frecuencia mayor que el valor de intervalo devuelto por `/bc-authorize`), debería recibir una respuesta como la siguiente:

```http theme={null}
{
  "error": "slow_down",
  "error_description": "You are polling faster than allowed. Try again in 10 seconds."
}
```

Además, Auth0 agregará el encabezado [Retry-After](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Retry-After) a la respuesta para indicar cuántos segundos debe esperar antes de volver a consultar. Si consulta con demasiada frecuencia de manera reiterada, aumentará la cantidad de segundos que debe esperar.

Si el usuario que autoriza ha aprobado la notificación push, la llamada devuelve el token de ID y el token de acceso (y, potencialmente, un token de actualización):

```http theme={null}
{
  "access_token": "eyJh...",
  "id_token": "eyJh...",
  "expires_in": 86400,
  "scope": "openid"
}
```

Una vez que hayas intercambiado un `auth_req_id` por un ID o un token de acceso, ya no se podrá volver a usar.

<div id="remarks">
  ### Observaciones
</div>

Incluya un parámetro opcional para la autenticación de la aplicación en la solicitud:

* Secreto del cliente con Basic Auth por HTTP, en cuyo caso no se requieren parámetros. `client_id` y `client_secret` se envían en un encabezado.
* Client Secret Post, en cuyo caso `client_id` y `client_secret` son obligatorios.
* Private Key JWT, donde `client_id`, `client_assertion` y el tipo de `client_assertion` son obligatorios.
* mTLS, donde el parámetro `client_id` es obligatorio y los encabezados `client-certificate` y `client-certificate-ca-verified` son obligatorios.

<div id="body-parameters">
  ## Parámetros del cuerpo
</div>

<ParamField body="client_id" type="string" required>
  El `client_id` de su aplicación.
</ParamField>

<ParamField body="auth_req_id" type="string" required>
  El `auth_req_id` devuelto por el endpoint `/bc-authorize`.
</ParamField>

<ParamField body="grant_type" type="string" required>
  Debe establecerse en `urn:openid:params:grant-type:ciba`.
</ParamField>

<div id="response-messages">
  ## Mensajes de respuesta
</div>

| Estado | Descripción                                 |
| ------ | ------------------------------------------- |
| 200    | Se devuelve el estado de autenticación.     |
| 400    | Solicitud incorrecta: parámetros no válidos |
| 500    | Error interno del servidor                  |
