J
Jesús Gabriel y Galán
Hi,
I'm trying to use Mechanize to retrieve spreadsheets from Google Docs
using the Google API. So far I got the ClientLogin to work, but I
can't seem to be able to use the Auth token they give me back. This is
what I have:
require 'logger'
require 'mechanize'
agent = WWW::Mechanize.new {|a| a.log = Logger.new("test.log")}
response = agent.post("https://www.google.com/accounts/ClientLogin",
"Email" => "(e-mail address removed)", "Passwd" => "xxxxx", "service" => "wise",
"source" => "personal-test-1.0", "accountType" => "GOOGLE")
h = {}
response.body.each {|line| a = line.split("="); h[a[0]] = a[1]}
auth = h["Auth"]
agent.basic_auth("GoogleLogin", auth)
# this didn't work either
#agent.auth("GoogleLogin", auth)
page = agent.get("http://spreadsheets.google.com/feeds/spreadsheets/private/full")
The problem is, according to google I have to:
"After a successful authentication request, use the Auth value to
create an Authorization header for each request:
Authorization: GoogleLogin auth=yourAuthValue"
I've checked and the ClientLogin is working and returning me an Auth
token, but I can't get Mechanize to use it. In the Mechanize logs I
see this:
I, [2007-10-08T17:01:52.211778 #24929] INFO -- : Net::HTTP:ost:
/accounts/ClientLogin
D, [2007-10-08T17:01:52.394047 #24929] DEBUG -- : request-header:
accept-language => en-us,en;q0.5
D, [2007-10-08T17:01:52.394214 #24929] DEBUG -- : request-header:
connection => keep-alive
D, [2007-10-08T17:01:52.394305 #24929] DEBUG -- : request-header: accept => */*
D, [2007-10-08T17:01:52.394394 #24929] DEBUG -- : request-header:
accept-encoding => gzip,identity
D, [2007-10-08T17:01:52.394482 #24929] DEBUG -- : request-header:
user-agent => WWW-Mechanize/0.6.10
(http://rubyforge.org/projects/mechanize/)
D, [2007-10-08T17:01:52.394570 #24929] DEBUG -- : request-header:
content-type => application/x-www-form-urlencoded
D, [2007-10-08T17:01:52.394656 #24929] DEBUG -- : request-header:
accept-charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7
D, [2007-10-08T17:01:52.394742 #24929] DEBUG -- : request-header:
content-length => 104
D, [2007-10-08T17:01:52.394828 #24929] DEBUG -- : request-header:
keep-alive => 300
D, [2007-10-08T17:01:52.613138 #24929] DEBUG -- : Read 563 bytes
D, [2007-10-08T17:01:52.613358 #24929] DEBUG -- : response-header:
cache-control => no-cache
D, [2007-10-08T17:01:52.613483 #24929] DEBUG -- : response-header:
date => Mon, 08 Oct 2007 15:00:17 GMT
D, [2007-10-08T17:01:52.613603 #24929] DEBUG -- : response-header:
content-type => text/plain
D, [2007-10-08T17:01:52.613721 #24929] DEBUG -- : response-header:
server => GFE/1.3
D, [2007-10-08T17:01:52.613837 #24929] DEBUG -- : response-header:
content-length => 563
D, [2007-10-08T17:01:52.613969 #24929] DEBUG -- : response-header:
pragma => no-cache
I, [2007-10-08T17:01:52.614363 #24929] INFO -- : status: 200
I, [2007-10-08T17:13:15.370472 #24929] INFO -- : Net::HTTP::Get:
/feeds/spreadsheets/private/full
D, [2007-10-08T17:13:15.482357 #24929] DEBUG -- : request-header:
accept-language => en-us,en;q0.5
D, [2007-10-08T17:13:15.482481 #24929] DEBUG -- : request-header:
connection => keep-alive
D, [2007-10-08T17:13:15.482534 #24929] DEBUG -- : request-header: accept => */*
D, [2007-10-08T17:13:15.482587 #24929] DEBUG -- : request-header:
accept-encoding => gzip,identity
D, [2007-10-08T17:13:15.482639 #24929] DEBUG -- : request-header:
user-agent => WWW-Mechanize/0.6.10
(http://rubyforge.org/projects/mechanize/)
D, [2007-10-08T17:13:15.482692 #24929] DEBUG -- : request-header:
referer => https://www.google.com/accounts/ClientLogin
D, [2007-10-08T17:13:15.482745 #24929] DEBUG -- : request-header:
accept-charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7
D, [2007-10-08T17:13:15.482796 #24929] DEBUG -- : request-header:
keep-alive => 300
D, [2007-10-08T17:13:15.652098 #24929] DEBUG -- : Read 141 bytes
D, [2007-10-08T17:13:15.652313 #24929] DEBUG -- : response-header:
cache-control => no-cache, no-store, max-age=0, must-revalidate
D, [2007-10-08T17:13:15.652438 #24929] DEBUG -- : response-header:
expires => Fri, 01 Jan 1990 00:00:00 GMT
D, [2007-10-08T17:13:15.652604 #24929] DEBUG -- : response-header:
date => Mon, 08 Oct 2007 15:11:40 GMT
D, [2007-10-08T17:13:15.652725 #24929] DEBUG -- : response-header:
content-type => text/html; charset=UTF-8
D, [2007-10-08T17:13:15.652859 #24929] DEBUG -- : response-header:
www-authenticate => No credentials were included in your request.
D, [2007-10-08T17:13:15.652977 #24929] DEBUG -- : response-header:
server => GFE/1.3
D, [2007-10-08T17:13:15.653094 #24929] DEBUG -- : response-header:
set-cookie => S=trix=Xc7oom0LVJ8; Path=/
D, [2007-10-08T17:13:15.653211 #24929] DEBUG -- : response-header:
content-length => 141
D, [2007-10-08T17:13:15.653326 #24929] DEBUG -- : response-header:
pragma => no-cache
D, [2007-10-08T17:13:15.659559 #24929] DEBUG -- : saved cookie:
S=trix=Xc7oom0LVJ8
I, [2007-10-08T17:13:15.659765 #24929] INFO -- : status: 404
So, it seems that the credentials are not correctly set. Anybody knows
how to do this?
Thanks,
Jesus.
I'm trying to use Mechanize to retrieve spreadsheets from Google Docs
using the Google API. So far I got the ClientLogin to work, but I
can't seem to be able to use the Auth token they give me back. This is
what I have:
require 'logger'
require 'mechanize'
agent = WWW::Mechanize.new {|a| a.log = Logger.new("test.log")}
response = agent.post("https://www.google.com/accounts/ClientLogin",
"Email" => "(e-mail address removed)", "Passwd" => "xxxxx", "service" => "wise",
"source" => "personal-test-1.0", "accountType" => "GOOGLE")
h = {}
response.body.each {|line| a = line.split("="); h[a[0]] = a[1]}
auth = h["Auth"]
agent.basic_auth("GoogleLogin", auth)
# this didn't work either
#agent.auth("GoogleLogin", auth)
page = agent.get("http://spreadsheets.google.com/feeds/spreadsheets/private/full")
The problem is, according to google I have to:
"After a successful authentication request, use the Auth value to
create an Authorization header for each request:
Authorization: GoogleLogin auth=yourAuthValue"
I've checked and the ClientLogin is working and returning me an Auth
token, but I can't get Mechanize to use it. In the Mechanize logs I
see this:
I, [2007-10-08T17:01:52.211778 #24929] INFO -- : Net::HTTP:ost:
/accounts/ClientLogin
D, [2007-10-08T17:01:52.394047 #24929] DEBUG -- : request-header:
accept-language => en-us,en;q0.5
D, [2007-10-08T17:01:52.394214 #24929] DEBUG -- : request-header:
connection => keep-alive
D, [2007-10-08T17:01:52.394305 #24929] DEBUG -- : request-header: accept => */*
D, [2007-10-08T17:01:52.394394 #24929] DEBUG -- : request-header:
accept-encoding => gzip,identity
D, [2007-10-08T17:01:52.394482 #24929] DEBUG -- : request-header:
user-agent => WWW-Mechanize/0.6.10
(http://rubyforge.org/projects/mechanize/)
D, [2007-10-08T17:01:52.394570 #24929] DEBUG -- : request-header:
content-type => application/x-www-form-urlencoded
D, [2007-10-08T17:01:52.394656 #24929] DEBUG -- : request-header:
accept-charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7
D, [2007-10-08T17:01:52.394742 #24929] DEBUG -- : request-header:
content-length => 104
D, [2007-10-08T17:01:52.394828 #24929] DEBUG -- : request-header:
keep-alive => 300
D, [2007-10-08T17:01:52.613138 #24929] DEBUG -- : Read 563 bytes
D, [2007-10-08T17:01:52.613358 #24929] DEBUG -- : response-header:
cache-control => no-cache
D, [2007-10-08T17:01:52.613483 #24929] DEBUG -- : response-header:
date => Mon, 08 Oct 2007 15:00:17 GMT
D, [2007-10-08T17:01:52.613603 #24929] DEBUG -- : response-header:
content-type => text/plain
D, [2007-10-08T17:01:52.613721 #24929] DEBUG -- : response-header:
server => GFE/1.3
D, [2007-10-08T17:01:52.613837 #24929] DEBUG -- : response-header:
content-length => 563
D, [2007-10-08T17:01:52.613969 #24929] DEBUG -- : response-header:
pragma => no-cache
I, [2007-10-08T17:01:52.614363 #24929] INFO -- : status: 200
I, [2007-10-08T17:13:15.370472 #24929] INFO -- : Net::HTTP::Get:
/feeds/spreadsheets/private/full
D, [2007-10-08T17:13:15.482357 #24929] DEBUG -- : request-header:
accept-language => en-us,en;q0.5
D, [2007-10-08T17:13:15.482481 #24929] DEBUG -- : request-header:
connection => keep-alive
D, [2007-10-08T17:13:15.482534 #24929] DEBUG -- : request-header: accept => */*
D, [2007-10-08T17:13:15.482587 #24929] DEBUG -- : request-header:
accept-encoding => gzip,identity
D, [2007-10-08T17:13:15.482639 #24929] DEBUG -- : request-header:
user-agent => WWW-Mechanize/0.6.10
(http://rubyforge.org/projects/mechanize/)
D, [2007-10-08T17:13:15.482692 #24929] DEBUG -- : request-header:
referer => https://www.google.com/accounts/ClientLogin
D, [2007-10-08T17:13:15.482745 #24929] DEBUG -- : request-header:
accept-charset => ISO-8859-1,utf-8;q=0.7,*;q=0.7
D, [2007-10-08T17:13:15.482796 #24929] DEBUG -- : request-header:
keep-alive => 300
D, [2007-10-08T17:13:15.652098 #24929] DEBUG -- : Read 141 bytes
D, [2007-10-08T17:13:15.652313 #24929] DEBUG -- : response-header:
cache-control => no-cache, no-store, max-age=0, must-revalidate
D, [2007-10-08T17:13:15.652438 #24929] DEBUG -- : response-header:
expires => Fri, 01 Jan 1990 00:00:00 GMT
D, [2007-10-08T17:13:15.652604 #24929] DEBUG -- : response-header:
date => Mon, 08 Oct 2007 15:11:40 GMT
D, [2007-10-08T17:13:15.652725 #24929] DEBUG -- : response-header:
content-type => text/html; charset=UTF-8
D, [2007-10-08T17:13:15.652859 #24929] DEBUG -- : response-header:
www-authenticate => No credentials were included in your request.
D, [2007-10-08T17:13:15.652977 #24929] DEBUG -- : response-header:
server => GFE/1.3
D, [2007-10-08T17:13:15.653094 #24929] DEBUG -- : response-header:
set-cookie => S=trix=Xc7oom0LVJ8; Path=/
D, [2007-10-08T17:13:15.653211 #24929] DEBUG -- : response-header:
content-length => 141
D, [2007-10-08T17:13:15.653326 #24929] DEBUG -- : response-header:
pragma => no-cache
D, [2007-10-08T17:13:15.659559 #24929] DEBUG -- : saved cookie:
S=trix=Xc7oom0LVJ8
I, [2007-10-08T17:13:15.659765 #24929] INFO -- : status: 404
So, it seems that the credentials are not correctly set. Anybody knows
how to do this?
Thanks,
Jesus.