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_typestringTipo de concesión OAuth2 usado para solicitar el token.enum: client_credentials; example: "client_credentials"
client_idstringIdentificador público de las credenciales API de la cuenta.
client_secretstringSecreto 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_typestringTipo de token OAuth2; Public API usa Bearer.example: "Bearer"
expires_inintegerDuración del token de acceso en segundos desde su emisión.example: 900
access_tokenstringToken Bearer OAuth2 de corta duración para solicitudes a Public API.example: "eyJ..."
scopestringPermisos 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.