Автоматическое продление токенов OAuth 2.0
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
access_token живет один час. Чтобы не просить пользователя авторизоваться заново, приложение сохраняет у себя refresh_token и обменивает его на новую пару токенов без участия пользователя. Время жизни refresh_token — 180 дней.
Первую пару токенов приложение получает по полному протоколу авторизации OAuth 2.0 или упрощенным способом. Продление работает одинаково для обоих случаев.
В любой момент до истечения срока действия refresh_token приложение может совершить GET-запрос к серверу авторизации:
https://oauth.bitrix24.tech/oauth/token/?
grant_type=refresh_token
&client_id=app.573ad8a0346747.09223434
&client_secret=LJSl0lNB76B5YY6u0YVQ3AW0DrVADcRTwVr4y99PXU1BWQybWK
&refresh_token=4f9k4jpmg13usmybzuqknt2v9fh0q6rl
Параметры:
Обязательные параметры отмечены *
|
Параметр |
Описание |
|
grant_type* |
Тип авторизационных данных. Для продления передайте значение |
|
client_id* |
Код приложения из партнерского кабинета или из формы локального приложения |
|
client_secret* |
Секретный ключ приложения из партнерского кабинета или из формы локального приложения |
|
refresh_token* |
Сохраненный токен продления авторизации |
Важно
Секретный ключ client_secret участвует только в запросах к серверу авторизации oauth.bitrix24.tech. Не размещайте его в коде, который выполняется в браузере.
Сервер авторизации ответит статусом 200 OK и телом в формате application/json:
{
"access_token": "ydtj8pho532wydb5ixk78ol7uqlb7sch",
"client_endpoint": "https://portal.bitrix24.ru/rest/",
"domain": "oauth.bitrix24.tech",
"expires": 1780319382,
"expires_in": 3600,
"member_id": "a223c6b3710f85df22e9377d6c4f7553",
"refresh_token": "3s6lr4kr3cv2od4v853gvrchb875bwxb",
"scope": "crm,entity,im,task",
"server_endpoint": "https://oauth.bitrix24.tech/rest/",
"status": "F",
"user_id": 67
}
Данные ответа:
|
Параметр |
Описание |
|
access_token |
Новый основной авторизационный токен для доступа к REST API. Время жизни — один час |
|
refresh_token |
Новое значение токена продления. Сохраните его вместо прежнего |
|
expires |
Момент истечения срока действия |
|
expires_in |
Время жизни |
|
client_endpoint |
Адрес REST-интерфейса Битрикс24. С него начинаются все вызовы методов |
|
server_endpoint |
Адрес REST-интерфейса сервера авторизации |
|
domain |
Домен сервера авторизации |
|
member_id |
Уникальный идентификатор Битрикс24 |
|
scope |
Разделенный запятыми список прав доступа, выданных приложению |
|
status |
Статус приложения в Битрикс24. Значения совпадают с полем |
|
user_id |
Идентификатор пользователя, для которого выдан токен |
На этом шаге приложение может получить ошибку. Например, если истек пробный или оплаченный период либо приложение удалили из Битрикс24.
{
"error": "PAYMENT_REQUIRED",
"error_description": "Payment required"
}
Другие ошибки сервера авторизации разобраны в статье Коды ошибок.
Когда обновлять сохраненные токены
Если приложение постоянно обменивается данными с Битрикс24 без участия пользователя, продумайте хранение токенов продления и механизм их использования.
refresh_token действует 180 дней. Если приложение само по себе не обращается к Битрикс24 чаще, достаточно раз в 180 дней запрашивать новую пару токенов, чтобы сохраненная авторизация не истекла.
Не обновляйте токен перед каждым обращением к REST API и не ставьте обновление по расписанию — раз в час или раз в сутки. Такие сценарии создают лишнюю нагрузку на сервер авторизации, и приложение может быть заблокировано автоматикой.
Рекомендуемая логика работы с токенами
- Сохраните полученную пару
access_tokenиrefresh_tokenна своей стороне. Держите их в хранилище, недоступном из браузера. - Вызывайте методы REST API с сохраненным
access_token. - Дождитесь ошибки
expired_tokenсо статусом401— она означает, что срок действия токена истек. - Запросите новую пару токенов у сервера авторизации по сохраненному
refresh_token. - Сохраните новую пару вместо прежней.
- Повторите вызов метода с теми же параметрами и новым
access_token.
Что делать дальше
- получить первую пару токенов — Полный протокол авторизации OAuth 2.0
- разобрать ошибку сервера авторизации — Коды ошибок
- вызвать метод с новым токеном — Как вызывать методы REST API