2010-01-27 8 views
2

J'essaie de me connecter à Yahoo par l'intermédiaire d'Oauth. J'utilise la gemme d'oauth avec ruby.Comment me connecter à Yahoo avec oauth en utilisant Ruby?

Je peux obtenir un jeton d'accès, mais je ne peux pas l'utiliser pour passer un appel. Voici mon code:

def oauth   
    OAuth::Consumer.new(ApplicationConfig['yahoo']['access_token'], 
     ApplicationConfig['yahoo']['secret'], 
     { 
     :site     => 'https://api.login.yahoo.com', 
     :scheme    => :query_string, 
     :http_method   => :get, 
     :request_token_path => '/oauth/v2/get_request_token', 
     :access_token_path => '/oauth/v2/get_token', 
     :authorize_path  => '/oauth/v2/request_auth', 
     :oauth_callback => 'http://my_callback' 
    }) 
end 

def oauth_api 
    OAuth::Consumer.new(ApplicationConfig['yahoo']['access_token'], 
     ApplicationConfig['yahoo']['secret'], 
     { 
     :site     => 'http://address.yahooapis.com', 
     :scheme    => :header, 
     :realm    => 'yahooapis.com', 
     :http_method   => :get, 
     :request_token_path => '/oauth/v2/get_request_token', 
     :access_token_path => '/oauth/v2/get_token', 
     :authorize_path  => '/oauth/v2/request_auth' 
    }) 
end 

@request_token = oauth.get_request_token({ :oauth_callback => 'my_callback' }) 

# go to @request_token.authorize_url 

@access_token = @request_token.get_access_token({ :oauth_verifier => params[:oauth_verifier] }) 

@access_token.consumer = oauth_api 

## Now I have an access token, but if I do something like: 

response = @access_token.get('/v1/searchContacts') 

## Then I get 

#<Net::HTTPForbidden 403 Forbidden readbody=true> 
# >> response.body 
# => "<!-- web231.address.pim.re3.yahoo.com uncompressed/chunked Wed Jan 13 01:15:46 PST 2010 -->\n" 

Fondamentalement, je compterait que pour travailler.

Je n'ai pas été en mesure de trouver un exemple de travail sur la façon de se connecter à Yahoo avec Ruby. J'espère que quelqu'un d'autre a déjà fait cela et qu'il est prêt à aider.

Répondre

0

quelque chose im travaillant sur et à peu près fini

host = 'login.yahoo.com'#set the host server in this case its login.yahoo.com 
port = 80 #self explainitray 
path = "/config/login_verify2/ispverify_user?&login=#{username}&passwd=#{password}" 
request = "GET #{path} HTTP/1.0\r\n\r\n" # send the HTTP GET request to the server 
socket = TCPSocket.open(host,port) # make the connection to the server 
socket.puts(request) # send the GET request to the server 
data_arrival = socket.read 

puis le partage Y=v= & T=z= les cookies et vous pouvez maintenant ouvrir un nouveau socket pour se connecter au service de messagerie instantanée comme si

login_packet = "1À€#{username}À€244À€0À€6À€Y=v=#{ycookie_start,ycookie_end[0]}; T=z=#{tcookie_start,tcookie_end[0]}À€" 
chatlogin = "YMSG#{0.chr}#{17.chr}#{0.chr}#{0.chr}#{(login_packet.length/256).chr}#{(login_packet.length % 256).chr}#{2.chr}#{38.chr}#{0.chr}#{0.chr}#{0.chr}#{0.chr}#{0.chr}#{0.chr}#{0.chr}#{0.chr}#{login_packet}" 
socket2 = TCPSocket.open('scs.msg.yahoo.com', 5050) 
socket2.puts(chatlogin) 
data2 = socket2.read 

Ce n'est pas encore complet client de travail, mais peut obtenir le cookie et aussi se connecter à un service de messagerie avec ce qu'il ya, je ne suis pas un programmeur de ruby ​​complet, mais j'ai remarqué qu'il est très facile de travailler avec l'espoir Cela aide le compagnon.

Questions connexes