> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.es/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestionar tokens de acceso con OAuth

<style>
  {`
    code {
      text-wrap:nowrap!important;
    }
    td code {
      text-wrap: wrap!important;
    }
    `}
</style>

Usa la API de tokens OAuth para generar y gestionar los tokens necesarios para autorizar tu [aplicación pública](/apps/legacy-apps/public-apps/overview) y las solicitudes que realiza. Por ejemplo, deberás usar esta API para obtener los tokens de acceso inicial y de actualización durante el proceso de instalación de la aplicación. Luego la usarás para seguir generando nuevos tokens cuando caduquen los antiguos. Más información sobre cómo [trabajar con OAuth](/apps/legacy-apps/authentication/working-with-oauth).

Para poder usar estos endpoints, deberás [crear una aplicación pública](/apps/legacy-apps/public-apps/overview). Un usuario deberá instalarlo en su cuenta para [iniciar el acceso con OAuth](/apps/legacy-apps/authentication/working-with-oauth#initiating-an-integration-with-oauth-2-0).

## Iniciar el acceso con OAuth

Después de crear tu aplicación, un usuario puede instalarla en su cuenta de HubSpot usando la URL de instalación ubicada en la configuración de la aplicación, la cual incluirá `client_id`, `redirect_uri` y `scopes` como parámetros de consulta. También puedes incluir `optional_scopes` y `state`, si es necesario.

Después de que un usuario autorice tu aplicación y la instale en su cuenta, la URL de redireccionamiento se adjuntará con un valor `code`, el cual puedes usar para [generar un token de acceso y un token de actualización](#generate-initial-access-and-refresh-tokens). El token de acceso se usará para autenticar las solicitudes que realice tu aplicación, mientras que el token de actualización se utilizará para obtener un nuevo token de acceso cuando caduque el actual.

Más información sobre cómo [iniciar OAuth para tu aplicación](/apps/legacy-apps/authentication/working-with-oauth#set-up-oauth-authentication).

## Generar tokens de acceso inicial y de actualización

Para obtener acceso OAuth y actualizar tokens, realiza una solicitud codificada `POST` de formulario URL a `/oauth/v1/token`. En el cuerpo de la solicitud, especificarás varios parámetros de autenticación, como `client_id` y `client_secret`, junto con el `code` devuelto a través de la URL de redireccionamiento.

Después de que un usuario autorice tu aplicación, la URL de redireccionamiento se adjuntará con un valor `code`. Al usar este código, generarás el token de acceso inicial y el token de actualización. Los tokens de acceso son de corta duración y puedes consultar el parámetro `expires_in` al generar un token de acceso para determinar su duración (en segundos).

Por ejemplo, el cuerpo de tu solicitud puede tener un aspecto similar al siguiente:

```shell theme={null}
curl --request POST \
  --url https://api.hubapi.com/oauth/v1/token \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'grant_type=authorization_code&code=bcf33c57-dd7a-c7eb-4179-9241-e01bd&redirect_uri=https://www.domain.com/redirect&client_id=7933b042-0952-4e7d-a327dab-3dc&client_secret=7a572d8a-69bf-44c6-9a34-416aad3ad5'
```

| Parámetro       | Tipo   | Descripción                                                                                                |
| --------------- | ------ | ---------------------------------------------------------------------------------------------------------- |
| `grant_type`    | Cadena | Debe ser `authorization_code` para que la solicitud genere tokens de acceso inicial y de actualización.    |
| `code`          | Cadena | El `code` que se devuelve en la URL de redireccionamiento después de que el usuario instala la aplicación. |
| `redirect_uri`  | Cadena | La URL de redireccionamiento establecida de la aplicación.                                                 |
| `client_id`     | Cadena | El ID de cliente de la aplicación.                                                                         |
| `client_secret` | Cadena | El secreto del cliente de la aplicación.                                                                   |

En la respuesta, recibirás el token de acceso junto con el token de actualización, el cual puedes usar para actualizar el token de acceso. El campo `expires_in` especifica cuánto durará el token de acceso (en segundos).

```json theme={null}
{
  "token_type": "bearer",
  "refresh_token": "1e8fbfb1-8e96-4826-8b8d-c8af73715",
  "access_token": "CIrToaiiMhIHAAEAQAAAARiO1ooBIOP0sgEokuLtAEaOaTFnToZ3VjUbtl46MAAAAEAAAAAgAAAAAAAAAAAACAAAAAAAOABAAAAAAAAAAAAAAAQAkIUVrptEzQ4hQHP89Eoahkq-p7dVIAWgBgAA",
  "expires_in": 1800
}
```

## Actualizar un token de acceso

Al usar un token de actualización, puedes generar un nuevo token de acceso realizando una solicitud `POST` codificada de formulario URL a `/oauth/v1/token`. En el cuerpo de la solicitud, especificarás `grant_type`, `client_id`, `client_secret` y `refresh_token`.

```shell theme={null}
curl --request POST \
  --url https://api.hubapi.com/oauth/v1/token \
  --header 'content-type: application/x-www-form-urlencoded' \
  --data 'grant_type=refresh_token&refresh_token=1e8fbfb1-8e96-4826-8b8d-c8af73715&client_id=7933b042-0952-4e7d-a327dab-3dc&client_secret=7a572d8a-69bf-44c6-9a34-416aad3ad5'
```

| Parámetro       | Tipo   | Descripción                                                                                                        |
| --------------- | ------ | ------------------------------------------------------------------------------------------------------------------ |
| `grant_type`    | Cadena | Debe ser `refresh_token` para que la solicitud genere nuevos tokens de acceso a partir del token de actualización. |
| `refresh_token` | Cadena | El valor del token de actualización.                                                                               |
| `client_id`     | Cadena | El ID de cliente de la aplicación.                                                                                 |
| `client_secret` | Cadena | El secreto del cliente de la aplicación.                                                                           |

## Recuperar metadatos del token de acceso

Para obtener información acerca de un token de acceso de OAuth, incluido el usuario para el que se creó el token y su Hub ID correspondiente, realiza una solicitud `GET` a `/oauth/v1/access-tokens/{token}`.

Recibirás una respuesta con información sobre el token de acceso del usuario y su cuenta de HubSpot.

```json theme={null}
{
  "token": "CNaKSIHAAEAQAAAARiO1ooBIOP0sgEokuLtATIU5m7Kzmjj0ihJJuKFq1TcIiHCqwE6MAAAAEEAAAAAAAAAAgAIUfmerBenQwc07ZHXy6atYNNW8XCVKA25hMVIAWgBgAA",
  "user": "user@domain.com",
  "hub_domain": "meowmix.com",
  "scopes": ["oauth", "crm.objects.contacts.read", "crm.objects.contacts.write"],
  "signed_access_token": {
    "expiresAt": 1727190403926,
    "scopes": "AAEAAAAQ==",
    "hubId": 1234567,
    "userId": 293199,
    "appId": 111111,
    "signature": "5m7ihJJuKFq1TcIiHCqwE=",
    "scopeToScopeGroupPks": "AAAAQAAAAAAAAAACAAAAAAAAAAAAAIAAAAAAA4AEAAAAAAAAAAAAAABAC",
    "newSignature": "fme07ZHXy6atYNNW8XCU=",
    "hublet": "na1",
    "trialScopes": "",
    "trialScopeToScopeGroupPks": "",
    "isUserLevel": false
  },
  "hub_id": 1234567,
  "app_id": 111111,
  "expires_in": 1754,
  "user_id": 293199,
  "token_type": "access"
}
```

<Warning>
  ### Nota:

  Se espera que los tokens de acceso de HubSpot fluctúen en tamaño a lo largo del tiempo, ya que se harán actualizaciones en la información que está codificada en ellos. Es recomendable permitir tokens de hasta 512 caracteres para contemplar posibles cambios.
</Warning>

## Eliminar un token de actualización

Si un usuario desinstala tu aplicación, puedes eliminar el token de actualización haciendo una solicitud `DELETE` a `/oauth/v1/refresh-tokens/{token}`. Esto solo eliminará el token de actualización. Los tokens de acceso generados con el token de actualización no serán eliminados. Además, esto no desinstalará la aplicación de las cuentas de HubSpot ni inhibirá la sincronización de datos entre la aplicación y la cuenta.
