Когда включен OIDC в Auth API (сейчас включен на тесте) – токен не продлевается автоматически. Его надо продлевать вручную с помощью ручки /openid/token.
По идее токена должно выписываться два:
access_token с временем жизни минут 15
refresh_token с временем жизни в недели и месяцы
С access_token так же приходит expires_in (в секундах, а в старых ручках expires в виде даты). Токен надо обновлять не реже, чем пройдет это время.
Вариант решения:
При открытии вкладки с приложением всегда делаем запрос на /openid/token (если пользователь уже логинился, у него должны быть сохранены refresh_token или token) для замены токена с параметрами ?grant_type=refresh_token& client_id=app&refresh_token={{token}}. {{token}} заменять на refresh_token, а если его нет, то на token
Из полученного JSON запоминать параметры token=access_token, refresh_token=refresh_token
Из старых ручек запоминать token=access_token or token, refresh_token=refresh_token or token. Но вообще потом там тоже будут оба токена приходить
expires/expires_in тоже запоминать в формате даты/юникс таймстемпа
Если делаешь API запрос, предварительно проверить, что expires < сейчас. Если такое произошло, сначала делаем шаг 1
Когда включен OIDC в Auth API (сейчас включен на тесте) – токен не продлевается автоматически. Его надо продлевать вручную с помощью ручки /openid/token.
По идее токена должно выписываться два:
С access_token так же приходит expires_in (в секундах, а в старых ручках expires в виде даты). Токен надо обновлять не реже, чем пройдет это время.
Вариант решения:
При открытии вкладки с приложением всегда делаем запрос на
/openid/token
(если пользователь уже логинился, у него должны быть сохраненыrefresh_token
илиtoken
) для замены токена с параметрами?grant_type=refresh_token& client_id=app&refresh_token={{token}}
. {{token}} заменять наrefresh_token
, а если его нет, то наtoken
Из полученного JSON запоминать параметры token=access_token, refresh_token=refresh_token
Из старых ручек запоминать token=access_token or token, refresh_token=refresh_token or token. Но вообще потом там тоже будут оба токена приходить
expires/expires_in тоже запоминать в формате даты/юникс таймстемпа
Если делаешь API запрос, предварительно проверить, что expires < сейчас. Если такое произошло, сначала делаем шаг 1
Я бы это делал на уровне auth-lib