Я могу зайти в приложение по 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. Также, можно попробовать либу ответом выше.
Комментариев нет:
Отправить комментарий