Второй шаг авторизации от имени сотрудника: код из адреса возврата меняется на токен этого сотрудника. Код действует 10 минут и обменивается один раз. Как получить код и проверить, чей токен пришёл, — в разделе Получение токена.
Тело передаётся в формате application/x-www-form-urlencoded, как требует OAuth 2.0. Серверное приложение подтверждает себя секретом клиента: полями client_id и client_secret или заголовком Authorization: Basic. Приложение без секрета передаёт client_id и code_verifier — проверочный код PKCE, из которого получен code_challenge ссылки авторизации.
Токен бессрочный: expires_in в ответе нет, и работает токен, пока сотрудник не отзовёт доступ. Если сотрудник уже авторизовал бота раньше, приходит его прежний токен. Чей это токен, показывает GETИнформация о токене.
Ошибки приходят в формате OAuth: invalid_grant — код истёк, уже использован, выдан для другого redirect_uri или не подходит code_verifier, а invalid_client — неверный client_id или client_secret. У обмена свой лимит: при его превышении метод отвечает 429 с кодом rate_limit в обычном формате ошибок API.
Тело запроса
application/x-www-form-urlencodedauthorization_codeauthorization_codeZmFrZV9hdXRoX2NvZGUhttps://bot.example.com/oauth/callbackAuthorization: Basic.aB3dE5fG7hJ9kL1mN3pQ5rS7tU9vW1xYclient_id его можно передать заголовком Authorization: Basic.dGhpc19pc19ub3RfYV9yZWFsX3NlY3JldAcode_challenge ссылки авторизации. Обязателен для приложения без секрета.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXkОтвет
Authorization: Bearer при запросах от его имени.pato_bm90X2FfcmVhbF90b2tlbgBearerBearercmVmcmVzaF9ub3RfcmVhbAchats:read messages:read tasks:read tasks:create1790242260