Как получить токен OAuth для Google Buzz, используя имя пользователя и пароль, не показывая страницу входа в Google?
Для чтения действий в Живой ленте Google требуется токен авторизации. Веб-приложение будет перенаправлять на страницу входа в систему Googles, где пользователь входит в систему и токен возвращается обратно в веб-приложение.
Но у меня есть локальное приложение Java без пользовательского интерфейса (например, сценарий). Это приложение знает имя пользователя и пароль. Как получить токен авторизации, используя это имя пользователя и пароль, не представляя страницу входа в Google?
2 ответа
Вероятно, это плохая идея, но вы можете использовать HTTP-библиотеку, такую как HttpClient, чтобы делать те же запросы, что и пользователь. Вам нужно будет использовать утилиту для наблюдения за заголовками, чтобы выяснить, какие URL вам нужны, и какие заголовки вам нужно использовать, но это можно автоматизировать. Если Google когда-либо изменит макет своей страницы, id
s, class
Если ваш синтаксический код разбит.
Кроме того, вам также нужно будет иметь возможность получить ответный ответ от сервера, который будет включать получение ответа в определенной конечной точке сети. Это можно решить с помощью решения 2, изложенного ниже.
В итоге.
Решение 1 - Аутентификация
- HttpClient GET против аутентификации URL.
- TagSoup для анализа ответа страницы, сохранения любых данных (если таковые имеются), которые требуются со страницы.
- Парсер XOM xml для работы с ответом из [1.2], если это необходимо.
- HttpClient запрашивает URL авторизации
Решение 2 - Получение ответа от Google
- Запустите сервер Jetty.
- Установите URL-адрес вашего ответа
localhost:****/whatever
при аутентификации. - Примите ответ в причале. Получить ответ в приложении командной строки.
Отказ от ответственности:
Это все непроверенное и очень теоретическое. Возможно, есть лучший способ сделать это, но нужно избегать простого открытия веб-браузера и разрешения входа пользователя.
Короткий ответ: ты не можешь. Вы абсолютно не хотите пытаться очистить страницу входа в Google или что-то подобное.
Лучше всего сделать что-то вроде облегченного встроенного сервера Jetty, который вы используете для получения обратного вызова из потока Google OAuth. Это именно то, что было сделано для OACurl, нашей OAuth-осведомленной оболочки curl. Код для этого находится в LoginCallbackServer.java.