Родился 15 июня 1917 года в селе Трибунки Тамбовской губернии. В 1933 году семья переехала в Москву, где Иван, окончив ФЗУ, работал в Метрострое и учился в аэроклубе.
В 1938 году окончил Борисоглебское военное авиационное училище, работал там инструктором, позже был инструктором в Батайской летной школе.
К началу войны имел хорошую летную подготовку, освоив 8 типов самолетов и налетав 800 часов.
На фронте с июля 1941 года.
13 июля 1943 года в трех вылетах он сбил 3 немецких самолета.
В конце октября в двух вылетах со штурманом полка А. Шевцовым им удалось сбить две «рамы», которые настойчиво вели воздушную разведку в районе станции Насва.
За этот бой они были награждены орденами Александра Невского.
После окончания войны в Европе добился отправки на Дальний Восток, где участвовал в боевых действиях на Як-9. Во время одной из штурмовок был подбит, с трудом привел горящий самолет на аэродром.
Всего Вишняков провел 296 боевых вылетов, 100 воздушных боев, сбил лично 20 и в группе — 3 самолета противника.
После войны окончил Военно-воздушную академию.
Летал на реактивных машинах.
В 1973 году выпустил книгу «На крутых виражах».
С 1975 года генерал-майор авиации Вишняков в запасе.
Жил и работал в Москве.
И. А. Вишняков умер 2 августа 1992 года.
Герой Советского Союза (23.02.1948).
Награжден орденом Ленина, четырьмя орденами Красного Знамени, орденом Александра Невского, двумя орденами Отечественной войны 1-й степени, орденами Красной Звезды, «За службу Родине в ВС СССР» 3-й степени, медалями.