---
title: "Установки и токены доступа"
description: "Устанавливайте приложение в аккаунты клиентов, сохраняйте installation_id и выпускайте короткоживущие Installation Access Tokens."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">Документация CloudPrint</a><span aria-hidden="true">/</span><span>Developer Platform</span></nav>

# Установки и токены доступа

<p class="docs-lead">App Installation — постоянная связь одного Developer Application с одним клиентским аккаунтом CloudPrint. Сохраните `installation_id` и выпускайте короткоживущий токен, когда вашему серверу нужен доступ к Print API этого аккаунта.</p>

## Выберите модель установки

Этот сценарий с подтверждением клиента нужен, когда у него уже есть аккаунт CloudPrint. Для аккаунтов, которые создаёт ваш продукт, используйте [Partner Platform](../../partner-platform/customer-accounts/): App Installation создаётся через Partner API без перенаправления клиента на экран согласия.

## Создайте ссылку установки

Добавьте в URL установки `client_id`, один из точно зарегистрированных `redirect_uri`, непредсказуемый `state`, связанный с текущим пользователем и клиентом, и только необходимые разрешения. Перенаправьте владельца аккаунта по этому URL. Переданный вашим интерфейсом Account ID сам по себе не подтверждает право доступа.

## Получите согласие владельца

CloudPrint покажет название приложения, Developer Account, публичные ссылки и запрошенные разрешения. Владелец выберет аккаунт CloudPrint и подтвердит доступ. Сразу запрашивайте только обязательные разрешения; дополнительные возможности должны требовать отдельного понятного согласия.

## Проверьте возврат пользователя

На адрес возврата приходят `installation_id`, `setup_action` и исходный `state`. Сравните `state` со значением на сервере, отклоните просроченную или уже использованную попытку и свяжите установку с клиентом, который начал процесс. Не используйте CloudPrint Account ID вместо идентификатора клиента в своей системе.

## Выпустите Installation Access Token

Создайте новый RS256 assertion приложения с `aud`, равным `https://public-api.cloudprint.me/developer-api/v1/app-installations/{installationId}/access-tokens`. Передайте его как `Authorization: Bearer <application_assertion>` в `POST /developer-api/v1/app-installations/{installationId}/access-tokens`. Ответ содержит `access_token`, `expires_in`, `account_id`, `installation_id` и одобренные разрешения.

## Используйте и кешируйте токен

Передавайте Installation Access Token как Bearer-токен в `/api/v1/*`. Кешируйте его отдельно для каждой установки почти до истечения срока, а не выпускайте заново для каждого задания. Refresh token не выдаётся: следующий короткоживущий токен выпускается для той же установки.

## Проверяйте разрешения и статус

Запрошенные разрешения должны быть непустым подмножеством разрешений установки. Установка со статусом `suspended` не может выпускать и использовать токены до возобновления, а `revoked` восстановить нельзя. После `401` один раз удалите кешированный токен и получите новый; после `403` проверьте разрешения и статус установки.

## Чек-лист перед запуском

- Используйте исходящее подключение агента и не открывайте порты принтера в интернет.
- Сохраняйте стабильный идентификатор принтера, а не только отображаемое имя.
- Проверяйте формат документа, размер страницы и ориентацию до создания задания.
- Явно задайте обработку конечных статусов, повторов и защиту от двойной печати.

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

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

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