Всем привет,
Постараюсь подробнее объяснить, что хочу реализовать.
Есть десктопное java приложение (не Android), в которое хочется вставить авторизацию ВКонтакте. При этом требование, чтоб приложение теоретически не могло бы перехватить, введенный пользователем пароль.
После изучения задачи, понял, что есть 3 варианта реализации:
1) HttpGet: делаем прямой запрос к Вконтакте, посылаем логин и пароль, введенным пользователем в приложении.
Недостатки: сами разработчики ВКонтакте не рекомендуют такой способ, как ненадежный и который может быть закрыт в любой момент.
Примеров такого кода на Хабре навалом:
habrahabr.ru/post/144813/
habrahabr.ru/post/92693/
2) Открываем окно браузера через desktop.browse() со специально сформированным запросом вида
oauth.vk.com/authorize?client_id=APP_ID& итд
Дальше пользователь независимо от приложения в браузере вводит пароль, нажимает кпопку согласие, перенаправляется на страницу с access_token.
Недостатки: через Desktop объект невозможно получить URL страницы, куда пользователь был перенаправлен, а значит и не получиться извлечь access_token.
3) Формируем запрос из пункта 2 не в стороннем браузере, а показываем пользователю внутри этого же приложения с помощью элемента, типа WebView.
Недостатки:
а) Тут пишут, что WebView сильно тормозит
stackoverflow.com/questions/8374365/integrating-javafx-2-0-webview-into-a-swing-java-se-6-application
б) Думается, что существуют возможность перехвата введенных данных — пароля в webview пользователем
Автор: ideas4ru