Страницы

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

пятница, 24 января 2020 г.

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

#openid #android #java


Я могу зайти в приложение по 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, с параметрами,
с редиректами.    


Ответы

Ответ 1



Я думаю, Вам нужно попробовать переопределить клиент для 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. Также, можно попробовать либу ответом выше.

Ответ 2



Есть библиотека: openid4java. Эта библиотека позволяет добавить поддержку OpenID в ваше веб-приложение на Java.

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

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