Получить токен доступа OAuth2
Обменяйте данные доступа CloudPrint API на короткоживущий Bearer-токен OAuth2 по схеме Client Credentials.
Назначение метода
Обменяйте данные доступа CloudPrint API на короткоживущий Bearer-токен OAuth2 по схеме Client Credentials.
Авторизация
Для этого метода Bearer-токен не нужен.
Запрос
Основной адрес API: https://public-api.cloudprint.me/oauth/token
Параметры
У метода нет параметров пути, строки запроса или дополнительных заголовков.
Тело запроса
Тип содержимого: application/x-www-form-urlencoded
| Имя | Тип | Обязательно | Описание | Ограничения |
|---|---|---|---|---|
grant_type | string | да | OAuth2 grant, используемый для запроса токена. | enum: client_credentials; example: "client_credentials" |
client_id | string | да | Публичный идентификатор из пары API Credentials аккаунта. | — |
client_secret | string | да | Секрет из данных доступа API; храните его только в защищённом хранилище серверной части. | — |
scope | string | нет | Запрашиваемые разрешения для токена доступа, разделённые пробелами. | example: "agents:read printers:read documents:write print_jobs:write print_jobs:read" |
Примеры запросов
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'];Ответ
HTTP-статус: 200 — Запрос выполнен.
Поля ответа
| Имя | Тип | Обязательно | Описание | Ограничения |
|---|---|---|---|---|
token_type | string | да | Тип OAuth2-токена; Public API использует Bearer. | example: "Bearer" |
expires_in | integer | да | Срок действия токена доступа в секундах с момента выдачи. | example: 900 |
access_token | string | да | Короткоживущий OAuth2 Bearer-токен для запросов к Public API. | example: "eyJ..." |
scope | string | да | Запрашиваемые разрешения для токена доступа, разделённые пробелами. | example: "printers:read print_jobs:write" |
Пример ответа
json
{
"token_type": "Bearer",
"expires_in": 900,
"access_token": "eyJ...",
"scope": "printers:read print_jobs:write"
}Ошибки
| HTTP-статус | Описание |
|---|---|
400 | Проверьте формат и параметры запроса. |
401 | Авторизация отсутствует или недействительна. |
429 | Превышен лимит запросов; учитывайте Retry-After. |
500 | Внутренняя ошибка CloudPrint. |
Рекомендации по интеграции
- Храните
client_secretтолько в защищённом хранилище серверной части; не передавайте его в браузер или распространяемое настольное приложение. - Кешируйте токен почти до окончания
expires_in, а не запрашивайте новый для каждого задания. - Запрашивайте только те разрешения, которые нужны текущей интеграции.
Связанная документация
Получить контекст API-клиентаПроверьте, к какому аккаунту и API-приложению относится текущий токен и какие разрешения ему выданы.Авторизация OAuth2 Client CredentialsСоздайте API-приложение CloudPrint, получите короткоживущий токен и безопасно храните учётные данные с минимально необходимыми разрешениями.Ошибки и повторы CloudPrint APIОбрабатывайте HTTP-статусы, машиночитаемые ошибки, ограничения частоты запросов, трассировку и безопасные повторы.