---
title: "Авторизация OAuth2 Client Credentials"
description: "Создайте API-приложение CloudPrint, получите короткоживущий токен и безопасно храните учётные данные с минимально необходимыми разрешениями."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">Документация CloudPrint</a><span aria-hidden="true">/</span><span>Print API</span></nav>

# Авторизация OAuth2 Client Credentials

<p class="docs-lead">CloudPrint использует серверный OAuth2 Client Credentials. Секрет хранится только в защищённом хранилище серверной части; браузер, мобильное приложение, скрипт агента и публичный репозиторий не должны его получать.</p>

## Создайте API-приложение и выберите разрешения

Создавайте отдельное приложение для каждой внешней системы. Для PDF- и RAW-печати нужны `printers:read`, `documents:write`, `print_jobs:write`, `print_jobs:read`; `agents:read` добавляйте только для `/api/v1/agents`. Секрет показывается один раз.

## Получите и кэшируйте токен

```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=YOUR_CLIENT_ID' \
  --data-urlencode 'client_secret=YOUR_CLIENT_SECRET' \
  --data-urlencode 'scope=printers:read documents:write print_jobs:write print_jobs:read'
```

```json
{
  "token_type": "Bearer",
  "expires_in": 900,
  "access_token": "eyJ..."
}
```

Кэшируйте токен почти на весь 900-секундный срок. Не запрашивайте новый перед каждой печатью.

## Проверьте аккаунт и разрешения

```bash
curl -sS https://public-api.cloudprint.me/api/v1/me \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

```json
{
  "account_id": "44444444-4444-4444-8444-444444444444",
  "account_name": "Acme Print Ops",
  "client_app_id": "33333333-3333-4333-8333-333333333333",
  "client_app_name": "Warehouse integration",
  "scopes": [
    "printers:read",
    "documents:write",
    "print_jobs:write",
    "print_jobs:read"
  ]
}
```

Эта проверка показывает, какой аккаунт, API-приложение и набор разрешений представляет токен, и предотвращает печать в неверном аккаунте.

## Обработайте ошибки OAuth и API

`400 invalid_scope` означает неизвестное или неразрешённое значение `scope`. `401 invalid_client` при получении токена указывает на неверные учётные данные. `401` при обращении к API означает истёкший или неверный Bearer-токен: обновите его один раз и один раз повторите запрос. `403` означает, что действующему токену не хватает разрешения.

## Безопасно заменяйте учётные данные

Выпустите замену, разверните её через менеджер секретов и проверьте `/api/v1/me` до отзыва старого клиента. Не журналируйте секрет и полный токен. `X-Request-Id` можно сохранять для сопоставления запросов.

## Следующие шаги

<div class="docs-card-grid"><a class="docs-card" href="/docs/getting-started/"><strong>Быстрый старт с CloudPrint API</strong><span>Подключите агент, получите OAuth-токен, выберите принтер, отправьте первое задание и дождитесь конечного статуса.</span></a>
<a class="docs-card" href="/docs/api/overview/"><strong>Обзор CloudPrint Public API</strong><span>Карта авторизации, принтеров, документов, заданий, статусов и ошибок CloudPrint для серверной интеграции.</span></a>
<a class="docs-card" href="/docs/developer-platform/"><strong>Developer Platform CloudPrint</strong><span>Создайте одно приложение, которое клиенты смогут подключать к своим аккаунтам CloudPrint.</span></a></div>

<nav class="docs-resource-links" aria-label="Следующие шаги"><a href="https://cloudprint.by/status/">Статус сервиса</a><a href="/docs/api/v1/explorer/">OpenAPI</a><a href="https://developer.cloudprint.me">Кабинет разработчика</a><a href="https://my.cloudprint.by">Открыть кабинет</a><a href="/docs/legal/privacy/">Политика конфиденциальности</a><a href="/docs/legal/terms/">Условия использования</a><a href="/docs/legal/data-processing/">DPA</a><a href="/docs/legal/service-level-agreement/">Соглашение об уровне сервиса</a></nav>