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

# OAuth 1.0a

export const Button = ({href, children}) => {
  return <div className="not-prose group">
    <a href={href}>
      <button className="flex items-center space-x-2.5 py-1 px-4 bg-primary-dark dark:bg-white text-white dark:text-gray-950 rounded-full group-hover:opacity-[0.9] font-medium">
        <span>
          {children}
        </span>
        <svg width="3" height="24" viewBox="0 -9 3 24" class="h-6 rotate-0 overflow-visible"><path d="M0 0L3 3L0 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"></path></svg>
      </button>
    </a>
  </div>;
};

<div id="oauth-10a">
  ## OAuth 1.0a
</div>

Muchos endpoints en la plataforma para desarrolladores de X usan el método OAuth 1.0a para actuar, o hacer solicitudes a la API, en nombre de una cuenta de X. Por ejemplo, si tienes una App de desarrollador de X, puedes hacer solicitudes a la API en nombre de cualquier cuenta de X siempre que ese usuario autorice tu App.

Ten en cuenta: si no conoces conceptos como HMAC-SHA1 y codificación porcentual, te recomendamos que consultes la sección “useful tools” más abajo, que enumera algunos clientes de API que simplifican en gran medida el proceso de autenticación.

<div id="key-concepts">
  ### Conceptos clave
</div>

<div id="signing-a-request-with-keys-and-tokens">
  #### Firmar una solicitud con claves y tokens
</div>

Debes firmar cada solicitud a la API pasando varias claves y tokens generados en un encabezado de autorización. Para comenzar, puedes generar varias claves y tokens en la página de detalles de tu [App de desarrollador de X](/es/resources/fundamentals/developer-apps), incluyendo lo siguiente:

|                                                                                            |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| :----------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Clave y secreto de API:<br /><br />`oauth_consumer_key`<br /><br />`oauth_consumer_secret` | Considéralos como el nombre de usuario y la contraseña que representan tu App de desarrollador de X cuando tu App realiza solicitudes a la API.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Token y secreto de acceso:<br /><br />`oauth_token`<br /><br />`oauth_token_secret`        | Un token de acceso y un secreto del token de acceso son credenciales específicas de un usuario que se utilizan para autenticar solicitudes de API OAuth 1.0a. Especifican la cuenta de X en cuyo nombre se realiza la solicitud.<br /><br />Puedes generar tu propio token de acceso y secreto del token si deseas que tu App realice solicitudes en nombre de la misma cuenta de X asociada con tu cuenta de desarrollador en la página de detalles de la \[App de desarrollador de X]/resources/fundamentals/developer-apps).<br /><br />Si deseas generar tokens de acceso para un usuario diferente, consulta "Realizar solicitudes en nombre de usuarios" más abajo. |

<div id="making-requests-on-behalf-of-users">
  #### Realizar solicitudes en nombre de los usuarios
</div>

Al crear una firma, necesitas un conjunto de tokens de acceso que representen al usuario en cuyo nombre vas a realizar una solicitud.

Puedes generar un conjunto de tokens de acceso que represente la cuenta de X que es propietaria de la App de desarrollador de X desde la [página de detalles de la App,](https://developer.x.com/content/developer-twitter/en/apps) pero si quieres realizar una solicitud en nombre de una cuenta de X diferente, el propietario de esa cuenta debe concederte acceso iniciando sesión en su cuenta como parte del [flujo OAuth de 3 patas (3-legged OAuth)](/es/resources/fundamentals/authentication#obtaining-access-tokens-using-3-legged-oauth-flow). El resultado de este proceso es un conjunto de tokens de acceso (oauth\_token y oauth\_token\_secret) que se pueden usar para realizar una solicitud OAuth 1.0a.

Una vez que tengas estas claves y tokens, puedes [crear una firma](/es/resources/fundamentals/authentication#creating-a-signature) desde cero. No recomendamos hacer esto a menos que sepas lo que estás haciendo, o que estés usando una de las herramientas mencionadas a continuación para realizar una solicitud a un endpoint que requiere OAuth 1.0a.

Como referencia, aquí tienes un ejemplo de una solicitud cURL firmada con todos los tokens generados incluidos en un encabezado de autorización:

```bash theme={null}
curl --request POST \
  --url 'https://api.x.com/1.1/statuses/update.json?status=Hello%20world' \
  --header 'authorization: OAuth oauth_consumer_key="CONSUMER_API_KEY", oauth_nonce="OAUTH_NONCE", oauth_signature="OAUTH_SIGNATURE", oauth_signature_method="HMAC-SHA1", oauth_timestamp="OAUTH_TIMESTAMP", oauth_token="ACCESS_TOKEN", oauth_version="1.0"' \
```

<Note>
  **Nota:** Los tokens de acceso de usuario son confidenciales y deben protegerse con mucho cuidado. Cuando se generan tokens de acceso, el usuario al que representan confía en que tu aplicación los mantenga seguros. Si se ve comprometida la seguridad tanto de las claves de API como de los tokens de acceso de usuario, tu aplicación podría exponer potencialmente el acceso a información privada y a funcionalidades de la cuenta. Te recomendamos obtener más información sobre cómo [proteger claves y tokens de acceso](/es/resources/fundamentals/developer-apps).
</Note>

<div id="useful-tools">
  ### Herramientas útiles
</div>

El proceso de [firmar una solicitud](/es/resources/fundamentals/authentication#creating-a-signature) es complicado. Recomendamos que uses una biblioteca cliente de API que genere automáticamente gran parte del token de autenticación:

|                                        |                                                                                                                                                                                                                          |
| :------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Postman](https://www.getpostman.com/) | Un cliente de API que te permite crear y enviar solicitudes a APIs REST. Lee nuestro tutorial “[Primeros pasos con Postman](/es/tutorials/postman-getting-started)” para obtener más información sobre esta herramienta. |
| [Insomnia](https://insomnia.rest/)     | Insomnia es un cliente de API REST con administración de cookies, variables de entorno, generación de código y autenticación para Mac, Windows y Linux.                                                                  |
