Как получить токен OAuth для Google Buzz, используя имя пользователя и пароль, не показывая страницу входа в Google?

Для чтения действий в Живой ленте Google требуется токен авторизации. Веб-приложение будет перенаправлять на страницу входа в систему Googles, где пользователь входит в систему и токен возвращается обратно в веб-приложение.

Но у меня есть локальное приложение Java без пользовательского интерфейса (например, сценарий). Это приложение знает имя пользователя и пароль. Как получить токен авторизации, используя это имя пользователя и пароль, не представляя страницу входа в Google?

2 ответа

Решение

Вероятно, это плохая идея, но вы можете использовать HTTP-библиотеку, такую ​​как HttpClient, чтобы делать те же запросы, что и пользователь. Вам нужно будет использовать утилиту для наблюдения за заголовками, чтобы выяснить, какие URL вам нужны, и какие заголовки вам нужно использовать, но это можно автоматизировать. Если Google когда-либо изменит макет своей страницы, ids, classЕсли ваш синтаксический код разбит.

Кроме того, вам также нужно будет иметь возможность получить ответный ответ от сервера, который будет включать получение ответа в определенной конечной точке сети. Это можно решить с помощью решения 2, изложенного ниже.

В итоге.

Решение 1 - Аутентификация

  1. HttpClient GET против аутентификации URL.
  2. TagSoup для анализа ответа страницы, сохранения любых данных (если таковые имеются), которые требуются со страницы.
  3. Парсер XOM xml для работы с ответом из [1.2], если это необходимо.
  4. HttpClient запрашивает URL авторизации

Решение 2 - Получение ответа от Google

  1. Запустите сервер Jetty.
  2. Установите URL-адрес вашего ответа localhost:****/whatever при аутентификации.
  3. Примите ответ в причале. Получить ответ в приложении командной строки.

Отказ от ответственности:

Это все непроверенное и очень теоретическое. Возможно, есть лучший способ сделать это, но нужно избегать простого открытия веб-браузера и разрешения входа пользователя.

Короткий ответ: ты не можешь. Вы абсолютно не хотите пытаться очистить страницу входа в Google или что-то подобное.

Лучше всего сделать что-то вроде облегченного встроенного сервера Jetty, который вы используете для получения обратного вызова из потока Google OAuth. Это именно то, что было сделано для OACurl, нашей OAuth-осведомленной оболочки curl. Код для этого находится в LoginCallbackServer.java.

Другие вопросы по тегам