Skip to main content

OAuth 1.0a

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.

Conceptos clave

Firmar una solicitud con claves y tokens

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, incluyendo lo siguiente:
Clave y secreto de API:

oauth_consumer_key

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:

oauth_token

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.

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).

Si deseas generar tokens de acceso para un usuario diferente, consulta “Realizar solicitudes en nombre de usuarios” más abajo.

Realizar solicitudes en nombre de los usuarios

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, 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). 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 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:
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"' \
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.

Herramientas útiles

El proceso de firmar una solicitud es complicado. Recomendamos que uses una biblioteca cliente de API que genere automáticamente gran parte del token de autenticación:
PostmanUn cliente de API que te permite crear y enviar solicitudes a APIs REST. Lee nuestro tutorial “Primeros pasos con Postman” para obtener más información sobre esta herramienta.
InsomniaInsomnia 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.