Срок жизни токена Яндекс 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>.

    Часто задаваемые вопросы