Si está diseñando o probando una aplicación para uso interno, podría ser conveniente no asociar las solicitudes de API con un usuario específico, como se hace con la autenticación básica, que exige un nombre de usuario y una contraseña, o bien con la autenticación de token de API, que también pide un nombre de usuario. La tercera opción consiste en usar un token de acceso OAuth.
A primera vista, la creación de un token OAuth, con su complejo flujo de autorización, podría parecer una tarea enorme. Sin embargo, se pueden omitir las partes más complicadas del proceso y obtener un token de acceso directamente de la API. Este artículo describe cómo crear su propio token OAuth para fines de prueba en unos pocos pasos sencillos.
Crear el cliente OAuth
El primer paso es crear un cliente OAuth para la prueba.
- En el Centro de administración, haga clic en el icono Aplicaciones e integraciones () en la barra lateral y seleccione API > API de Zendesk.
- En la pestaña Clientes OAuth, haga clic en Agregar cliente OAuth en la parte superior derecha de la lista.
Configurar el cliente para fines de prueba es un poco diferente que crear un cliente OAuth normal. Estas son algunas de las diferencias:
- La redirección tiene que ser un URL HTTPS válido, pero no es necesario que sea un sitio web real para este proyecto. Ejemplo: https://unsitiocualquiera.com.
- El identificador único es el nombre de cliente que se usa en el código. También puede obtener la ID de cliente mediante el extremo para obtener clientes de la API de clientes OAuth.
- Se recomienda que copie el secreto para referencia futura. Una vez creado, no se mostrará nuevamente, pero lo va a necesitar si desea usarlo para crear una aplicación web de OAuth o para otros proyectos.
- Los demás campos se pueden llenar con datos ficticios.
Crear el token de acceso
Ahora tiene todo lo que necesita para crear un token con la API para tokens OAuth. Así es como se hace la solicitud con cURL:
curl https://{subdomain}.zendesk.com/api/v2/oauth/tokens.json \
-H "Content-Type: application/json" \
-d '{"token": {"client_id": "your_client_id", "scopes": ["read", "write"]}}' \
-X POST -v -u {email_address}:{password}
Algunas observaciones acerca de este código:
- Recuerde reemplazar el marcador de posición del subdominio con su propio subdominio
- El valor de "client_id" es el número que copió de la página de clientes OAuth
- Defina sus ámbitos ["leer", "escribir"] a menos que esté probando específicamente un acceso de solo lectura para un recurso
- Si su organización utiliza el inicio de sesión único (SSO) y las contraseñas de Zendesk fueron borradas de la cuenta de Zendesk, tendrá que usar un token de API para autenticar la solicitud:
-u {email_address}/token:{api_token}
. Consulte API token (token de API) en la documentación de la API de Support.
Ejecute la solicitud cURL. Esta debe devolver un paquete JSON integrado por un objeto de token con varias propiedades:
El valor de "full_token" será su token de acceso. Cópielo y guárdelo en un lugar seguro.
Observe que la propiedad "expires_at" de la respuesta es "null", lo cual quiere decir que el token no dejará de funcionar a menos que borre el cliente mismo. De igual manera, la próxima vez que visite la lista de Clientes OAuth en el Centro de administración, el número de tokens activos para su nuevo cliente debería haber aumentado en 1.
Usar su nuevo token de acceso
¿De qué le sirve tener un token de acceso si no tiene con qué usarlo? Ninguno de los ejemplos a continuación utiliza un nombre de usuario o una contraseña. Se diseñó así a propósito. Un token de acceso OAuth no depende de ninguna cuenta de usuario, lo cual es una de las ventajas de usarlo en aplicaciones y scripts.
Uso de un token de acceso para autenticar una solicitud API
Cualquier llamada de API que exija autenticación se realizará con un token de acceso OAuth. Por ejemplo, una llamada al extremo de tickets que normalmente se vería así:
curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
-u {email_address}:{password}
se ve así con el token de acceso:
curl https://{subdomain}.zendesk.com/api/v2/tickets.json \
-H "Authorization: Bearer {access_token}"
Uso de un token de acceso en un cliente API
También puede usar un token de acceso OAuth en cualquiera de nuestros clientes API. El cliente Ruby, por ejemplo, normalmente requiere autenticación con un nombre de usuario y una contraseña (o token de API), de esta manera:
config.username = "user email" config.password = "user password"
En cambio, si usa un token de acceso, se verá así:
config.access_token = "your OAuth access token"