Przejdź do treści

Pobierz token dostępu OAuth2

Wymień dane dostępowe CloudPrint API na krótkotrwały token Bearer OAuth2 w przepływie Client Credentials.

POST/oauth/tokenWersja API: v1operationId: issueOAuthTokenOtwórz w Markdown

Działanie metody

Wymień dane dostępowe CloudPrint API na krótkotrwały token Bearer OAuth2 w przepływie Client Credentials.

Uwierzytelnianie

Ta metoda nie wymaga tokenu Bearer.

Żądanie

Podstawowy adres API: https://public-api.cloudprint.me/oauth/token

Parametry

Metoda nie ma parametrów ścieżki, zapytania ani dodatkowych nagłówków.

Treść żądania

Typ zawartości: application/x-www-form-urlencoded

NazwaTypWymaganeOpisOgraniczenia
grant_typestringtakGrant OAuth2 używany w żądaniu tokenu.enum: client_credentials; example: "client_credentials"
client_idstringtakPubliczny identyfikator z pary danych API konta.
client_secretstringtakSekret z danych dostępowych API; przechowuj go wyłącznie w magazynie sekretów po stronie serwera.
scopestringnieUprawnienia żądane dla tokenu dostępu, rozdzielone spacjami.example: "agents:read printers:read documents:write print_jobs:write print_jobs:read"

Przykładowe żądania

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

Odpowiedź

Status HTTP: 200 — Żądanie zostało wykonane.

Pola odpowiedzi

NazwaTypWymaganeOpisOgraniczenia
token_typestringtakTyp tokenu OAuth2; Public API używa Bearer.example: "Bearer"
expires_inintegertakCzas ważności tokenu dostępu w sekundach od wydania.example: 900
access_tokenstringtakKrótkotrwały token OAuth2 Bearer używany w żądaniach Public API.example: "eyJ..."
scopestringtakUprawnienia żądane dla tokenu dostępu, rozdzielone spacjami.example: "printers:read print_jobs:write"

Przykładowa odpowiedź

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

Błędy

Status HTTPOpis
400Sprawdź format i parametry żądania.
401Brak uwierzytelnienia albo jest ono nieprawidłowe.
429Przekroczono limit żądań; zastosuj Retry-After.
500Wewnętrzny błąd CloudPrint.

Wskazówki integracyjne

  • Przechowuj client_secret wyłącznie w magazynie sekretów po stronie serwera; nie przekazuj go do przeglądarki ani rozpowszechnianej aplikacji komputerowej.
  • Przechowuj token w pamięci podręcznej niemal do końca expires_in, zamiast pobierać go dla każdego zadania.
  • Żądaj tylko uprawnień potrzebnych danej integracji.

Powiązana dokumentacja

Przewodniki dotyczące integracji CloudPrint, podłączania lokalnego agenta i obsługi procesów drukowania.