HTTPClient can't login to Google Voice

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)?

On 2010-08-03 18:26:16 +0100, Mike T. said:

VOICE_HOME_URL = “https://www.google.com/voice
resp = clnt.post_content LOGIN_URL,
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

Jason W. wrote:

I could log in to Google with this:

Guess it was long time ago, before Google added that GALX thing…

http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE # added this line

I tried this code and it didn’t work:

403
Error=BadAuthentication

Any other ideas?

I’ve not used httpclient before or google’s API much so I don’t know
about GALX. I’ve used HTTParty for this sort of stuff though.

Thanks for the tip! I’ve tried net/http, RestClient and HTTPClient and
all failed in a similar manner. I think I’m doing something wrong and
I’d rather find out what it is than try yet another library.

On 2010-08-03 21:21:48 +0100, Mike T. said:

I’ve not used httpclient before or google’s API much so I don’t know
about GALX. I’ve used HTTParty for this sort of stuff though.

Thanks for the tip! I’ve tried net/http, RestClient and HTTPClient and
all failed in a similar manner. I think I’m doing something wrong and
I’d rather find out what it is than try yet another library.

I don’t think the API for this is even released offically? But there is
lots of documented examples on Google’s website for other API services,
maybe they’ll help.

On 2010-08-03 20:16:04 +0100, Mike T. said:

Jason W. wrote:

I could log in to Google with this:

Guess it was long time ago, before Google added that GALX thing…

http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE # added this line

I tried this code and it didn’t work:

What does the code look like now? Added that line to mine and ir still
works.

403
Error=BadAuthentication

Any other ideas?

I’ve not used httpclient before or google’s API much so I don’t know
about GALX. I’ve used HTTParty for this sort of stuff though.

On Tue, Aug 3, 2010 at 1:26 PM, Mike T. [email protected] wrote:

             :Passwd   => Google_Password,
             :GALX     => @galx

http://everydayscripting.blogspot.com/2009/10/python-fixes-to-google-login-script.html

login_params = urllib.urlencode( {
‘Email’ : email,
‘Passwd’ : password,
‘continue’ : ‘https://www.google.com/voice/account/signin’,
‘GALX’: galx_value
})

Slightly different parameters?

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.

I noticed that this redirect only happened when a valid username and
password was entered. I hacked my copy of httpclient to not raise the
exception so I could take a look at what was being returned:

“If you’ve been redirected to this page from the sign-in box, we’ve
detected an error with your cookie settings. Please follow the
instructions for your browser listed below. After clearing your cache
and cookies, try signing in again.”

Bump. Anyone?

unknown wrote:

On Tue, Aug 3, 2010 at 1:26 PM, Mike T. [email protected] wrote:

� � � � � � � � �:Passwd � => Google_Password,
� � � � � � � � �:GALX � � => @galx

http://everydayscripting.blogspot.com/2009/10/python-fixes-to-google-login-script.html

login_params = urllib.urlencode( {
‘Email’ : email,
‘Passwd’ : password,
‘continue’ : ‘https://www.google.com/voice/account/signin’,
‘GALX’: galx_value
})

Slightly different parameters?

Unfortunately, this doesn’t work :frowning: I changed parameters as you
suggested and got the same result. I’ve checked email and password many
times, they are correct.

I’m redirected to:

http://www.google.com/support/accounts/bin/answer.py?answer=32050&hl=en&ctx=ch_CheckCookie"

and the CheckCookie part hints that HTTPClient is doing something wrong
with the cookies.