Как получить токен OAuth для Google Buzz, используя имя пользователя и пароль, не показывая страницу входа в Google - PullRequest
0 голосов
/ 25 мая 2010

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

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

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

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

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

2 голосов
/ 25 мая 2010

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

Кроме того, вам также нужно будет иметь возможность получить ответный ответ от сервера, который будет включать получение ответа в определенной конечной точке сети. Это можно решить с помощью решения 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. Принять ответ в причале. Получить ответ в приложении командной строки.

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

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

...