Saltar al contenido

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.

POST/oauth/tokenVersión de la API: v1operationId: issueOAuthTokenVer como Markdown

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 ​

NombreUbicaciónTipoObligatorioDescripciónRestricciones
X-Request-IdheaderstringnoIdentificador 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

NombreTipoObligatorioDescripciónRestricciones
grant_typestringsíTipo de concesión OAuth2 usado para solicitar el token.enum: client_credentials; example: "client_credentials"
client_idstringsíIdentificador público de las credenciales API de la cuenta.—
client_secretstringsíSecreto de las credenciales API; guárdalo únicamente en el almacén de secretos del servidor.—
scopestringnoPermisos 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 ​

NombreTipoObligatorioDescripciónRestricciones
token_typestringsíTipo de token OAuth2; Public API usa Bearer.example: "Bearer"
expires_inintegersíDuración del token de acceso en segundos desde su emisión.example: 900
access_tokenstringsíToken Bearer OAuth2 de corta duración para solicitudes a Public API.example: "eyJ..."
scopestringsí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 HTTPDescripción
400Comprueba el formato y los parámetros.
401Falta la autenticación o no es válida.
429Se superó el límite de solicitudes; respeta Retry-After.
500Error 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 ​

Guías para integrar CloudPrint, conectar el agente local y operar flujos de impresión.