From: Jason Watson Date: 2010-08-04T03:31:11+09:00 Subject: Re: HTTPClient can't login to Google Voice On 2010-08-03 18:26:16 +0100, Mike Telis said: > I'm trying to login to Google Voice using the following code: > > > require 'httpclient' > > Google_Login = 'googlename' > Google_Password = 'password' > > PRE_LOGIN_URL = "https://www.google.com/accounts/ServiceLogin" > LOGIN_URL = "https://www.google.com/accounts/ServiceLoginAuth" > VOICE_HOME_URL = "https://www.google.com/voice" > > clnt = HTTPClient.new(:agent_name => "Mozilla/5.0 (Macintosh; U; Intel > Mac OS X 10.5; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2") > #clnt.debug_dev = STDERR > > resp = clnt.get PRE_LOGIN_URL > > clnt.cookie_manager.cookies.each {|x| @galx=x.value if x.name == 'GALX'} > # fetch GALX > > resp = clnt.post_content LOGIN_URL, > :service => 'grandcentral', > :continue => 'https://www.google.com/voice', > :Email => Google_Login, > :Passwd => Google_Password, > :GALX => @galx > > and post_content ends up redirecting to non-https URL (which is > definitely wrong). BTW, I believe that post_content should change method > to :get on redirect. > > Any ideas what might be wrong with the code (or library)? I could log in to Google with this: require 'net/https' def auth user_email, passwd, account_type, service http = Net::HTTP.new("www.google.com", 443) http.use_ssl = true path = "/accounts/ClientLogin" data = "accountType=#{account_type}&Email=#{user_email}&Passwd=#{passwd}&service=#{service}" headers = {'Content-Type' => 'application/x-www-form-urlencoded'} resp, data = http.post(path, data, headers) puts resp.code puts resp.body cl_string = data[/Auth=(.*)/,1] headers["Authorization"] = "GoogleLogin auth=#{cl_string}" end auth "email", "pass", "GOOGLE", "grandcentral" jbw