Глядя на ваш код, я думаю, что при первом щелчке вы не входите в систему. Вы просто перенаправляете родительское окно на страницу входа (ту, которая сначала отображается в IFrame). Вот почему вам нужно дважды нажать эту кнопку для входа в систему - во второй раз перенаправление не происходит, так как URL родительского окна не изменяется, поэтому в основном во второй раз часть top.location.href = document.location.href
не дает никаких результатов, и вход продолжается.
Я думаю, что правильным шагом было бы сначала выполнить аутентификацию, а затем перенаправление, противоположное тому, как это выглядит в настоящее время. Вы можете добавить скрипт для обратной передачи на этой странице, чтобы он проверял, работает ли он во фрейме, и если это так, он перенаправляет родительское окно на другую страницу. Конечно, если вы можете изменить код ... С учетом предоставленной детализации я могу только сказать, что может быть не так, и предложить исправление, но не могу дать решение.