Rails 3 - войдите на другой сайт и сохраняйте куки в сессии
я собираю небольшое приложение, которое позволит пользователю войти в полупопулярную социальную сеть, которая неу меня нет достаточного API, поэтому яЯ использую механизм механизации для автоматизации нескольких функций, которые я хотел бы добавить для любого, например массовых сообщений.
Из-за ограничений API, яЯ вынужден сделать это, притворяясь пользователем, взаимодействующим с http-интерфейсом сайта.
Проблема яу меня есть, как только пользователь заходит на мой сайт, как я могу сохранить куки с сайта социальной сети в сеансе, чтобы они неНе нужно вводить учетные данные для каждой загрузки страницы?
Я пытался собрать cookie из экземпляра Mechanize, но получил ошибки, связанные с мьютексом.У него нет метода маршала.
РЕДАКТИРОВАТЬ - Решено
Оказалось, довольно просто, но документация точно нене может помочь, просто из-за незавершенности.
Вот'Что я сделал, чтобы поймать куки и вернуть их для будущих запросов (большая часть кода и проверка ошибок исключены для краткости):
users_controller.rb
def create
session.delete(:agent) if session[:agent]
agent = Mechanize.new
page = agent.get('www.socialnetwork.com/login')
login_form = page.form
login_form.email = params[:login][:email]
login_form.password = params[:login][:password]
page = agent.submit(login_form, login_form.buttons.first)
cookies = agent.cookie_jar.store.map {|i| i}
session[:agent] = Marshal.dump cookies
redirect_to root_path
end
application_controller.rb
before_filter :set_agent
def set_agent
if session[:agent]
@agent = Mechanize.new
cookies = Marshal.load session[:agent]
cookies.each {|i| @agent.cookie_jar.store.add i}
end
end