Конечно, вот базовая версия того, что я делаю:
require 'mechanize'
agent = Mechanize.new
page = agent.get "https://docs.google.com"
form = page.forms.first
form.Email = "your_username"
form.Passwd = "your_password"
page = agent.submit form
test = agent.get "google_download_url_goes_here"
puts test.body
Если вы посмотрите на test
, вы увидите материал перенаправления Java вместо файла xls.
Я не работал над этим в течение нескольких дней, но у меня есть небольшое ощущение, что я получаю перенаправление, потому что сценарий не "должным образом" аутентифицирован.Механизация должна обрабатывать файлы cookie и перенаправления, поэтому я думаю, что это должно просто работать, но это не так.
ОБНОВЛЕНИЕ:
URL-адреса экспорта расположены немного дальшена той же странице в той документации, на которую вы ссылались в своем комментарии.URL для экспорта электронной таблицы выглядит следующим образом:
http://spreadsheets.google.com/feeds/download/spreadsheets/Export?key="document_resource_id_goes_here"&exportFormat=xls
Вы должны иметь возможность подключить его к браузеру и загрузить файл (если вы вошли в систему, конечно).Идентификатор ресурса документа - это просто уникальный ключ для любого документа, с которым вы работаете, вы можете вручную вставить его в URL для тестирования в браузере.
Однако я почти уверен, что ни один из этих URL API не будетработать в сценарии, если он не обрабатывает аутентификацию так, как запрашивает Google.Я не совсем уверен, что я смотрю, но при использовании Wireshark для перехвата пакетов я вижу некоторые ошибки при использовании скрипта, который не получается при использовании моего браузера.Эти ошибки возникают, когда сервер и скрипт обмениваются какой-либо информацией о сертификате.В любом случае, я немного больше смотрю на камень OAuth и думаю, что начинаю понимать его лучше.
Если вы идете сюда:
http://googlecodesamples.com/oauth_playground/
Вы можете поиграть с вещами OAuth, это как-то безумно, как это работает.Вы запрашиваете токен запроса с набором параметров, которые должны быть «правильными».Он отправляет маркер запроса, который вы затем используете для ссылки на страницу входа в систему, где вы вводите свои учетные данные Google (как это было бы при ручной работе с документами Google).Как только ваши учетные данные проверены, он попросит вас предоставить разрешение токену запроса.Токен запроса обновляется до токена доступа, а затем передается обратно в сценарий, после чего вы можете начать работу с остальным API, ссылаясь на этот токен доступа ... кажется излишним, но я не эксперт по безопасности.
Вот что я надеюсь сделать:
Узнайте, как использовать гем OAuth Ruby для запроса и отправки токенов в Google.
Используйте Mechanize, чтобы очистить страницу входа в Google и ввести учетные данные, как только я смогу отправить ему токен запроса, который он хочет
Используйте Mechanize, чтобы нажать кнопку «Предоставить доступ», как только яУчетные данные отправляются
Затем, надеюсь, я обнаружу, что на самом деле могу использовать оставшуюся часть API для работы с файлами
(Grrr! учимсяправильно отформатировать текст на этом сайте примерно так же сложно !!:))