Проблема аутентификации Google Reader - PullRequest
5 голосов
/ 23 июня 2010

API Google Reader Кажется, что сегодня ожидается что-то другое для аутентификации!

Примерно неделю назад я скачал this , и все работает, и я пытаюсь перенести это на java.Для моего кода он работает отлично (с помощью ваших примеров) до сегодняшнего дня.Я собираю все трассировки и обнаружил, что внезапно читатель Google не принимает только SID в качестве cookie.И, конечно же, я тестирую и запускаю ваше примерное приложение, и оно не работает так же.

Затем я пошел, чтобы подделать данные Google Reader, и я удаляю все записи cookie, кроме SID, и этоне работает (ну, это дает 401, так же, как мое приложение и ваш образец);Я проверил снова и обнаружил, что теперь ему нужна еще одна запись cookie под названием HSID, которая, по сравнению с SID (длиной более 100 слов), составляет около 10-20 слов.Кто-нибудь знает, где мы можем получить этот дополнительный HSID?

PS Я могу сделать HTTPS для аутентификации, и Google возвращает мне три токена (SID, LSID, AUTH).Но нигде я не могу угадать, что такое HSID.

Ответы [ 6 ]

10 голосов
/ 23 июня 2010

Я сделал это.Да, ссылка , предоставленная sfa, верна.Но формат слишком запутанный.Вот как я это делаю.

  1. Публикация на https://www.google.com/accounts/ClientLogin с учетными данными для входа.
  2. В свою очередь, при правильном входе в систему будут переданы три токена: a.СИД б.LSID c.Auth
  3. Сохранить Auth где-нибудь в приложении.Забудьте о SID и LSID (я думаю, они могут удалить их позже)
  4. В каждом запросе добавляйте в заголовок следующее: headername: Значение авторизации: GoogleLogin auth = {Auth string} например (в Java)

    Метод HttpGet = новый HttpGet (CommandUrl + QueryString);method.addHeader ("Авторизация", "GoogleLogin auth =" + Auth);

Это работает.Спасибо sfa за ссылку.

3 голосов
/ 23 июня 2010

Вы должны добавить Авторизацию GoogleLogin auth = xxx в свой заголовок.Вот цитата из сообщения :

Вот краткое изложение того, как сделать это изменение: Для тех приложений, область которых уже получает аутентификацию от https://www.google.com/accounts/ClientLoginВы должны получить как часть вашего ответа значение Auth =.Для каждого запроса, который вы отправляете в Reader, вы должны указать это значение в виде заголовка HTTP, и все будет работать как обычно.Формат заголовка: Авторизация: GoogleLogin auth = [значение получено из ClientLogin]

Подтвердите, что это работает!Я получил ту же ошибку и уже решил проблему. Смотрите здесь .

1 голос
/ 24 августа 2010

Или рассмотрите возможность использования класса ReaderTemplate, предлагаемого здесь: http://github.com/wspringer/greader-java/. Он в основном скрывает сложность переплетения в соответствующих заголовках и (пере) аутентификации.

1 голос
/ 23 июня 2010

Подробнее см. http://code.google.com/p/google-reader-api/wiki/Authentication, но вкратце, поддерживаются только ClientLogin и OAuth. Пожалуйста, не продолжайте моделировать поток браузера (с файлами cookie SID и HSID), который не поддерживается и может прерваться в любой момент.

0 голосов
/ 06 июля 2010

4 шага, описанные xandy, работают, спасибо.

Это моя реализация шагов xandy в .NET: http://sandrinodimattia.net/blog/post/Consuming-Google-(Reader)-with-NET-Part-1-Authentication.aspx

0 голосов
/ 23 июня 2010

при первом входе в систему https://www.google.com/accounts/ServiceLoginAuth , вы получите hsid!

Я вижу все операции API Google Reader использовать HSID.

я использую firebug, вижу hsid в поле ответа setCookie

...