#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.
Комментариев нет:
Отправить комментарий