Т.е. он не устаревает через 20 минут, да?
Устаревает, но в настройках на этот момент появится новый код
Скорее всего у вас проблема в архитектуре, должно быть похоже на следующее:
1) ловит код на redirect_uri, тут же делаем запрос на получение пары токенов
2) сохраняем токены себе в базу
3) используем access_token в запросах
4) как только получаем в очередном запросе ошибку авторизации, делаем запрос на поучение новой пары токенов, но теперь не через код авторизации, а через refresh_token
5) сохраняем в базу новую полученную пару токенов и идём в пункт 3