Saltar al contenido principal

Obtención de tokens de acceso mediante el flujo OAuth de 3 patas

Para realizar acciones en nombre de otro usuario, necesitarás obtener sus tokens de acceso. Los tokens de acceso indican la cuenta de X en cuyo nombre se realiza la solicitud; para que puedas obtenerlos, primero deberán concederte acceso. Estos tokens no caducan, pero el usuario puede revocarlos en cualquier momento. X te permite obtener tokens de acceso de usuario mediante el flujo OAuth de 3 patas, que permite a tu App obtener un token de acceso y un secreto de token de acceso redirigiendo al usuario a X para que autorice tu aplicación. Este flujo es casi idéntico al descrito en implementing Log in with X, con dos excepciones: Antes de comenzar, deberás verificar los permisos de tu aplicación y conocer las consumer keys y la URL de callback. Si no tienes una URL de callback o una interfaz de usuario accesible públicamente, considera usar la autorización basada en PIN, pensada para aplicaciones que no pueden acceder a ni incrustar un navegador web para redirigir al usuario después de la autorización. Los posibles estados de la interacción de inicio de sesión de 3 patas se ilustran en el siguiente diagrama de flujo:

Descripción general del proceso

A grandes rasgos, el proceso de OAuth de 3 patas hará lo siguiente:
  1. Crear una solicitud para que una aplicación consumidora obtenga un token de solicitud.
  2. Hacer que el usuario se autentique y enviar a la aplicación consumidora un token de solicitud.
  3. Convertir el token de solicitud en un token de acceso de usuario utilizable.
Aclaración de terminología En la guía a continuación, puede encontrar distintos términos que se refieren a lo mismo. Credenciales de cliente:
  • App Key === API Key === Consumer API Key === Consumer Key === Customer Key === oauth_consumer_key
  • App Key Secret === API Secret Key === Consumer Secret === Consumer Key === Customer Key === oauth_consumer_secret
  • Callback URL === oauth_callback  
Credenciales temporales:
  • Request Token === oauth_token
  • Request Token Secret === oauth_token_secret
  • oauth_verifier  
Credenciales de token:
  • Access token === Token === oauth_token resultante
  • Access token secret === Token Secret === oauth_token_secret resultante

Pasos del recorrido

Paso 1: POST oauth/request_token Crea una solicitud para que una aplicación consumidora obtenga un token de solicitud. El único parámetro distintivo en esta solicitud es oauth_callback, que debe ser una versión codificada para URL de la URL a la que deseas redirigir al usuario cuando complete el paso 2. El proceso de firma de OAuth agrega los demás parámetros. Ten en cuenta que cualquier URL de callback que utilices con el endpoint POST oauth/request_token deberá configurarse en la página de detalles de la app dentro de la configuración de tu App de desarrollador en el Portal de desarrolladores.   La solicitud incluye: oauth_callback="https%3A%2F%2FyourCallbackUrl.com" oauth_consumer_key="cChZNFj6T5R0TigYB9yd1w"  Tu app debe examinar el estado HTTP de la respuesta. Cualquier valor distinto de 200 indica un error. El cuerpo de la respuesta contendrá los parámetros oauth_token, oauth_token_secret y oauth_callback_confirmed. Tu app debe verificar que oauth_callback_confirmed sea true y almacenar los otros dos valores para los siguientes pasos.   La respuesta incluye oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_token_secret=veNRnAWe6inFuo8o2u8SLLZLjolYDmDP7SzL0YfYI oauth_callback_confirmed=true Paso 2: GET oauth/authorize Haz que el usuario se autentique y envíe a la aplicación consumidora un token de solicitud.   URL de ejemplo para redirigir al usuario: https://api.x.com/oauth/authorize?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 Tras una autenticación correcta, tu callback_url recibirá una solicitud que contiene los parámetros oauth_token y oauth_verifier. Tu aplicación debe verificar que el token coincida con el token de solicitud recibido en el paso 1.   Solicitud desde la redirección del cliente: https://yourCallbackUrl.com?oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0&oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Paso 3: POST oauth/access_token Convierte el token de solicitud en un token de acceso utilizable. Para convertir el token de solicitud en un token de acceso utilizable, tu aplicación debe realizar una solicitud al endpoint POST oauth/access_token que incluya el valor oauth_verifier obtenido en el paso 2. El token de solicitud también se pasa en la parte oauth_token del encabezado, pero esto habrá sido agregado por el proceso de firma.   La solicitud incluye: POST /oauth/access_token oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w oauth_token=NPcudxy0yU5T3tBzho7iCotZ3cnetKwcTIRlX0iwRl0 oauth_verifier=uw7NjWHT6OJ1MpJOXsHfNxoAhPKpgI8BlYDhxEjIBY Una respuesta correcta contiene los parámetros oauth_token y oauth_token_secret. El token y el token secreto deben almacenarse y usarse para futuras solicitudes autenticadas a la X API. Para determinar la identidad del usuario, usa GET account/verify_credentials.   La respuesta incluye: oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4 oauth_token_secret=PbKfYqSryyeKDWz4ebtY3o5ogNLG11WJuZBc9fQrQo Uso de estas credenciales para solicitudes requeridas de OAuth 1.0a (aplicación-usuario) Ahora que has obtenido los tokens de acceso del usuario, puedes usarlos para acceder a ciertas API, como POST statuses/update para crear Tweets en nombre de los usuarios.   La solicitud incluye: POST statuses/update.json oauth_consumer_key=cChZNFj6T5R0TigYB9yd1w oauth_token=7588892-kagSNqWge8gB1WwE3plnFsJHAZVfxWD7Vb57p0b4

Caso de uso de ejemplo

El flujo estándar es web y utiliza el flujo de autorización OAuth de 3 etapas (3-legged). Las capturas de pantalla aquí descritas forman parte de un ejemplo cuyo código fuente puede consultarse en https://github.com/xdevplatform/twauth-web. En algún punto de su aplicación, querrá redirigir a X para autorizarla.
Cuando redirija a X con el token de solicitud, se le pedirá al usuario que autorice su aplicación.
Una vez que el usuario autorice su aplicación, será redirigido a la URL de callback proporcionada al generar el token de solicitud. Utilizará esto para obtener el token de acceso permanente de ese usuario y almacenarlo localmente.