Descripción general
La implementación de navegador de Iniciar sesión con X se basa en OAuth. Esta página muestra las solicitudes necesarias para obtener un access token en el flujo de inicio de sesión. Para usar el flujo de Iniciar sesión con X, ve a la configuración de tu X app y asegúrate de que la opción “Allow this app to be used to Sign in with X?” esté habilitada. Esta página asume que el lector sabe cómo firmar solicitudes usando el protocolo OAuth 1.0a. Si quieres saber cómo firmar una solicitud, lee la página Autorizando una solicitud. Si quieres comprobar la firma de las solicitudes de esta página, el consumer secret utilizado es:Paso 1: Obtener un request token
Para iniciar un flujo de sign-in, tu X app debe obtener un request token enviando un mensaje firmado a POST oauth / request_token. El único parámetro único en esta solicitud esoauth_callback, que debe ser una versión codificada en URL de la URL a la que quieres que se redirija a tu usuario cuando complete el paso 2. Los parámetros restantes se añaden mediante el proceso de firma OAuth.
Ten en cuenta - Cualquier URL de callback que uses con el endpoint POST oauth / request_token deberá estar en la whitelist dentro de la configuración de la X app en la developer console.
Solicitud de ejemplo (la cabecera Authorization ha sido dividida):
200 indica un fallo. El cuerpo de la respuesta contendrá los parámetros oauth_token, oauth_token_secret y oauth_callback_confirmed. Tu aplicación debe verificar que oauth_callback_confirmed sea true y almacenar los otros dos valores para los siguientes pasos.
Respuesta de ejemplo (el cuerpo de la respuesta ha sido dividido):
Paso 2: Redirigir al usuario
El siguiente paso es dirigir al usuario a X para que pueda completar el flujo apropiado, tal como se describe en Flujo de inicio de sesión en el navegador. Dirige al usuario a GET oauth / authenticate, y el request token obtenido en el paso 1 debe pasarse como el parámetrooauth_token.
La forma más fluida de que un sitio web implemente esto sería emitir una redirección HTTP 302 como respuesta a la solicitud original de “iniciar sesión”. Las aplicaciones móviles y de escritorio deberían abrir una nueva ventana del navegador o dirigirse a la URL mediante una vista web incrustada.
URL de ejemplo a la que redirigir:
- Con sesión iniciada y aprobado: si el usuario ha iniciado sesión en x.com y ya ha aprobado la aplicación que llama, será autenticado inmediatamente y devuelto a la URL de callback con un OAuth request token válido. La redirección a x.com no es evidente para el usuario.
- Con sesión iniciada pero no aprobado: si el usuario ha iniciado sesión en x.com pero no ha aprobado la aplicación que llama, se mostrará una solicitud para compartir el acceso con la aplicación que llama. Después de aceptar la solicitud de autorización, el usuario será redirigido a la URL de callback con un OAuth request token válido.
- Sin sesión iniciada: si el usuario no ha iniciado sesión en x.com, se le pedirá que introduzca sus credenciales y conceda acceso a la aplicación para acceder a su información en la misma pantalla. Una vez iniciada la sesión, el usuario será devuelto a la URL de callback con un OAuth request token válido.
callback_url recibirá una solicitud que contendrá los parámetros oauth_token y oauth_verifier. Tu aplicación debería verificar que el token coincida con el request token recibido en el paso 1.
Solicitud desde la redirección del cliente (parámetros de la querystring divididos):
Paso 3: Convertir el request token en un access token
Para convertir el request token en un access token utilizable, tu aplicación debe hacer una solicitud al endpoint POST oauth / access_token, que contenga el valoroauth_verifier obtenido en el paso 2. El request token también se pasa en la parte oauth_token de la cabecera, aunque esto lo habrá añadido el proceso de firma.
Solicitud de ejemplo (cabecera Authorization dividida):
oauth_token y oauth_token_secret. El token y el token secret deben almacenarse y usarse para futuras solicitudes autenticadas a la X API. Para determinar la identidad del usuario, utiliza GET account / verify_credentials.