Страницы

Поиск по вопросам

вторник, 16 июля 2019 г.

Вход в систему с помощью OpenID в Android-приложении

Я могу зайти в приложение по Google Open ID (на сервере поддержка реализована, работоспособна). Клиент работает на платформе Android. Вход в систему происходит таким образом: спрашиваем у сервера уникальный URI, по которому следует проследовать пользователю, и посылаем на этот URI запрос. Если пользователь в данной системе уже выполнил вход в Google Account, то открывается сессия для этого пользователя (в это время клиент проверяет появление текущей сессии). Иначе пользователю предоставляется страница входа в Google Account. Я пытаюсь реализовать это с помощью WebView таким образом: WebView web = new WebView(context); web.loadUrl(uniqUrlFromServer); В итоге происходит что-то непонятное. На эмуляторе WebView открывает нужную страницу, но когда я ввожу имя и пароль и нажимаю "Sign In", то входа в Google Account не происходит, вместо этого открывается браузер (отдельное приложение). На устройстве WebView не открывает первоначальный URI вообще. URI для OpenID, конечно, не простой: HTTPS, с параметрами, с редиректами.


Ответ

Я думаю, Вам нужно попробовать переопределить клиент для WebView. Примерно так:
webview.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { }
@Override public boolean shouldOverrideUrlLoading(WebView view, String url) { }
@Override public void onPageStarted(WebView view, String url, Bitmap favicon) { }
@Override public void onPageFinished(WebView view, String url) { }
});
И уже в этих методах реагировать при разборе URL как угодно. Дока по WebView. Ну и может поможет - StackOverflow. Также, можно попробовать либу ответом выше.

Комментариев нет:

Отправить комментарий