Срок жизни токена Яндекс OAuth: всё, что нужно знать
При разработке приложений с авторизацией через Яндекс ID вы можете получить токен доступа (access token) разными способами. Один из них - переход по ссылке https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>. Разберем, сколько живёт такой токен и как продлить его работу.
Какой срок жизни у токена, полученного через response_type=token?
Токен, полученный через response_type=token (Implicit Grant), имеет ограниченный срок действия. По умолчанию он живёт 1 год (365 дней) с момента выдачи. Это стандартное значение для Яндекс OAuth, если не указано иное в настройках приложения.
Почему токен может истечь раньше?
Существует несколько причин, по которым токен может стать недействительным до истечения года:
- Отзыв пользователем - владелец может отозвать доступ через настройки Яндекс ID.
- Изменение прав доступа - если вы изменили список запрашиваемых разрешений, старый токен аннулируется.
- Сброс пароля - при смене пароля все токены пользователя становятся недействительными.
Как проверить срок действия токена?
Вы можете отправить запрос к API Яндекса с этим токеном. Например, GET-запрос к https://login.yandex.ru/info?format=json с заголовком Authorization: OAuth <токен>. Если в ответе получаете данные пользователя - токен активен. Если ошибка 401 - срок истёк или токен отозван.
Как продлить токен или получить новый?
Для продления доступа после истечения токена нужно повторить процедуру OAuth авторизации. Рекомендуется использовать response_type=code (Authorization Code Grant) - тогда у вас будет refresh token, который позволяет обновлять токен без участия пользователя. В случае с response_type=token refresh token не выдаётся, поэтому единственный способ - заново пройти авторизацию.
Сравнение методов получения токена
Метод response_type=token прост в реализации, но не даёт возможности автоматического обновления. Для production-приложений лучше использовать response_type=code, чтобы получить и access token, и refresh token. Последний живёт дольше и позволяет поддерживать сессию без участия пользователя.
Что делать, если токен перестал работать?
Если ваш токен внезапно перестал действовать, проверьте:
- Не истёк ли год с момента выдачи.
- Не отозвал ли пользователь доступ.
- Не изменились ли настройки приложения в Яндекс ID.
Если ни одна из причин не подходит, сгенерируйте новый токен заново, перейдя по ссылке https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>.