Как я могу войти в Google OAuth через webview_flutter и JavaScript? - PullRequest
0 голосов
/ 15 апреля 2020

У меня нет доступа к бэкэнду веб-сайта, на котором включена аутентификация Google. Я пытался заполнить поля с помощью JS и определить, перенаправляет ли веб-просмотр с входа в Google на главную страницу сайта, чтобы убедиться, что вход был успешным. Однако после нажатия первой кнопки «Далее» форма пароля не будет заполнена.

URL-адрес: https://accounts.google.com/signin/oauth/identifier?client_id=236409531543-vu6db5193n0h6phbhtgi96ogfsonem60.apps.googleusercontent.com&redirect_uri=https%3A%2F%2Fcanvas.thelatinschool.org%2Flogin%2Foauth2%2Fcallback&response_type=code&scope=openid%20email&state=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhYWNfaWQiOjEwMDAwMDAwMDAwMDEwLCJub25jZSI6IjM5MDc2OWU3MjRiZTgwM2RkZWVlNzAyZjM0YzllNDU1NzRiZWI0MzhlNGZjZTk3NSIsImhvc3QiOiJjYW52YXMudGhlbGF0aW5zY2hvb2wub3JnIiwiZXhwIjoxNTg2OTYxNzYyfQ.JNuP1dN1LeCreun0mQe4BW_gQ1CHKsQvNCqI_CV-zQ8&o2v=1&as=7IS_eREKb9dcD7a5Ld56Tw&flowName=GeneralOAuthFlow

Код:

webView.evaluateJavascript("javascript:var uselessvar =document.getElementById('identifierId').value='$email';");
webView.evaluateJavascript("javascript:var uselessvar =document.getElementById('identifierNext').click()");
webView.evaluateJavascript("javascript:var uselessvar =document.getElementsByName('password')[0].value='" + password + "';");
webView.evaluateJavascript("javascript:var uselessvar =document.getElementById('identifierNext').click()");

Если я поставлю задержку 5se c перед паролем формы будет автоматически заполнен, тогда форма пароля будет правильно заполнена. Я думаю, что проблема в том, что webview пытается ввести пароль JS еще до загрузки страницы. Я пытался увидеть, будет ли это исправлено, прослушивая изменения URL, но веб-просмотр не обнаруживает изменения URL при нажатии следующей кнопки. Есть ли лучший способ автозаполнения без использования Firebase, потому что у меня нет токенов, которые использует веб-сайт?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...