Zum Inhalt springen

OAuth2-Zugriffstoken abrufen

Tauschen Sie CloudPrint-API-Zugangsdaten per Client Credentials gegen ein kurzlebiges OAuth2-Bearer-Token.

POST/oauth/tokenAPI-Version: v1operationId: issueOAuthTokenAls Markdown anzeigen

Funktion dieser Methode

Tauschen Sie CloudPrint-API-Zugangsdaten per Client Credentials gegen ein kurzlebiges OAuth2-Bearer-Token.

Authentifizierung

Diese Methode benötigt kein Bearer-Token.

Anfrage

Produktions-URL: https://public-api.cloudprint.me/oauth/token

Parameter

NamePositionTypErforderlichBeschreibungEinschränkungen
X-Request-IdheaderstringneinOptionale Kennung zur Anfrageverfolgung; CloudPrint gibt einen sicheren Wert im Antwort-Header zurück.maxLength: 128; example: "order-100045-attempt-1"

Anfrageinhalt

Inhaltstyp: application/x-www-form-urlencoded

NameTypErforderlichBeschreibungEinschränkungen
grant_typestringjaOAuth2-Grant-Type für die Token-Anfrage.enum: client_credentials; example: "client_credentials"
client_idstringjaÖffentliche Kennung aus den API-Zugangsdaten des Kontos.
client_secretstringjaSecret aus den API-Zugangsdaten; bewahren Sie es nur im Secret Store des Backends auf.
scopestringneinDurch Leerzeichen getrennte Scopes für das angeforderte Zugriffstoken.example: "agents:read printers:read documents:write print_jobs:write print_jobs:read"

Anfragebeispiele

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'];

Antwort

HTTP-Status: 200 — Anfrage erfolgreich.

Antwortfelder

NameTypErforderlichBeschreibungEinschränkungen
token_typestringjaOAuth2-Token-Typ; die Public API verwendet Bearer.example: "Bearer"
expires_inintegerjaGültigkeitsdauer des Zugriffstokens in Sekunden ab Ausstellung.example: 900
access_tokenstringjaKurzlebiges OAuth2-Bearer-Token für Anfragen an die Public API.example: "eyJ..."
scopestringjaDurch Leerzeichen getrennte Scopes für das angeforderte Zugriffstoken.example: "printers:read print_jobs:write"

Beispielantwort

json
{
  "token_type": "Bearer",
  "expires_in": 900,
  "access_token": "eyJ...",
  "scope": "printers:read print_jobs:write"
}

Fehler

HTTP-StatusBeschreibung
400Prüfen Sie Format und Parameter.
401Authentifizierung fehlt oder ist ungültig.
429Anfragelimit überschritten; beachten Sie Retry-After.
500Interner CloudPrint-Fehler.

Hinweise zur Integration

  • Bewahren Sie client_secret nur im Secret Store des Backends auf; senden Sie es nie an den Browser und binden Sie es nicht in ausgelieferte Desktop-Anwendungen ein.
  • Speichern Sie das Token bis kurz vor expires_in, statt es für jeden Druckauftrag neu anzufordern.
  • Fordern Sie nur die benötigten Scopes an.

Verwandte Dokumentation

Anleitungen zur CloudPrint-Integration, zur Verbindung des lokalen Agenten und zum zuverlässigen Betrieb von Druckabläufen.