Obtener un token de acceso OAuth2
Intercambia las credenciales de la API de CloudPrint por un token Bearer OAuth2 de corta duración mediante Client Credentials.
Qué hace este método
Intercambia las credenciales de la API de CloudPrint por un token Bearer OAuth2 de corta duración mediante Client Credentials.
Autenticación
Este método no requiere un token Bearer.
Solicitud
URL de producción: https://public-api.cloudprint.me/oauth/token
Parámetros
| Nombre | Ubicación | Tipo | Obligatorio | Descripción | Restricciones |
|---|---|---|---|---|---|
X-Request-Id | header | string | no | Identificador opcional para rastrear la solicitud; CloudPrint devuelve un valor seguro en la cabecera de respuesta. | maxLength: 128; example: "order-100045-attempt-1" |
Cuerpo de la solicitud
Tipo de contenido: application/x-www-form-urlencoded
| Nombre | Tipo | Obligatorio | Descripción | Restricciones |
|---|---|---|---|---|
grant_type | string | sí | Tipo de concesión OAuth2 usado para solicitar el token. | enum: client_credentials; example: "client_credentials" |
client_id | string | sí | Identificador público de las credenciales API de la cuenta. | — |
client_secret | string | sí | Secreto de las credenciales API; guárdalo únicamente en el almacén de secretos del servidor. | — |
scope | string | no | Permisos solicitados para el token de acceso, separados por espacios. | example: "agents:read printers:read documents:write print_jobs:write print_jobs:read" |
Ejemplos de solicitud
cURL
bash
curl -sS https://public-api.cloudprint.me/oauth/token \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'client_id=33333333-3333-4333-8333-333333333333' \
--data-urlencode 'client_secret=cpsec_...' \
--data-urlencode 'scope=agents:read printers:read documents:write print_jobs:write print_jobs:read'PHP
php
<?php
$response = file_get_contents('https://public-api.cloudprint.me/oauth/token', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => http_build_query([
'grant_type' => 'client_credentials',
'client_id' => getenv('CLOUDPRINT_CLIENT_ID'),
'client_secret' => getenv('CLOUDPRINT_CLIENT_SECRET'),
'scope' => 'agents:read printers:read documents:write print_jobs:write print_jobs:read',
]),
],
]));
$token = json_decode((string) $response, true, flags: JSON_THROW_ON_ERROR)['access_token'];Respuesta
Estado HTTP: 200 — Solicitud completada.
Campos de respuesta
| Nombre | Tipo | Obligatorio | Descripción | Restricciones |
|---|---|---|---|---|
token_type | string | sí | Tipo de token OAuth2; Public API usa Bearer. | example: "Bearer" |
expires_in | integer | sí | Duración del token de acceso en segundos desde su emisión. | example: 900 |
access_token | string | sí | Token Bearer OAuth2 de corta duración para solicitudes a Public API. | example: "eyJ..." |
scope | string | sí | Permisos solicitados para el token de acceso, separados por espacios. | example: "printers:read print_jobs:write" |
Ejemplo de respuesta
json
{
"token_type": "Bearer",
"expires_in": 900,
"access_token": "eyJ...",
"scope": "printers:read print_jobs:write"
}Errores
| Estado HTTP | Descripción |
|---|---|
400 | Comprueba el formato y los parámetros. |
401 | Falta la autenticación o no es válida. |
429 | Se superó el límite de solicitudes; respeta Retry-After. |
500 | Error interno de CloudPrint. |
Recomendaciones de integración
- Guarda
client_secretúnicamente en el almacén de secretos del servidor; nunca lo envíes al navegador ni lo incluyas en una aplicación de escritorio distribuida. - Conserva el token hasta poco antes de
expires_in, en lugar de solicitar uno para cada trabajo. - Solicita únicamente los permisos que necesite la integración.
Documentación relacionada
Obtener el contexto actual del cliente APIConfirma qué cuenta, aplicación cliente y permisos representa el token de acceso actual.Autenticación del servidorIntercambia credenciales de API por un token OAuth2 de corta duración mediante Client Credentials.Errores y reintentos de la API de CloudPrintGestiona estados HTTP, errores legibles por máquina, límites de solicitudes, trazabilidad y reintentos seguros.