2010-04-09 4 views
9
@@timestamp = nil 

def generate_oauth_url 
    @@timestamp = timestamp 
    url = CONNECT_URL + REQUEST_TOKEN_PATH + "&oauth_callback=#{OAUTH_CALLBACK}&oauth_consumer_key=#{OAUTH_CONSUMER_KEY}&oauth_nonce=#{NONCE} &oauth_signature_method=#{OAUTH_SIGNATURE_METHOD}&oauth_timestamp=#{@@timestamp}&oauth_version=#{OAUTH_VERSION}" 
    puts url 
    url    
end 

def sign(url) 
    Base64.encode64(HMAC::SHA1.digest((NONCE + url), OAUTH_CONSUMER_SECRET)).strip 
end 

def get_request_token 
    url = generate_oauth_url 
    signed_url = sign(url)   
    request = Net::HTTP.new((CONNECT_URL + REQUEST_TOKEN_PATH),80) 
    puts request.inspect 
    headers = { "Authorization" => "Authorization: OAuth oauth_nonce = #{NONCE}, oauth_callback = #{OAUTH_CALLBACK}, oauth_signature_meth od = #{OAUTH_SIGNATURE_METHOD}, oauth_timestamp=#{@@timestamp}, oauth_consumer_key = #{OAUTH_CONSUMER_KEY}, oauth_signature = #{signed_url}, oauth_versio n = #{OAUTH_VERSION}" } 

    request.post(url, nil,headers)     
end 

def timestamp 
    Time.now.to_i 
end 

Je suis en train de faire ce que OAuth fait pour tenter de comprendre comment utiliser les en-têtes d'autorisation. Je reçois également l'erreur suivante. J'essaie de me connecter à l'API linkedin.net/http.rb: 560: dans `initialiser ': getaddrinfo: Nom ou service non connu (SocketError)

/usr/lib/ruby/1.8/net/http.rb:560:in 'initialize': getaddrinfo: Name or service not known (SocketError)

J'apprécierais vraiment si quelqu'un pouvait me pousser dans la bonne direction.

Répondre

18

« Nom ou service non connu » est une erreur au niveau socket qui pointe généralement soit une adresse IP non valide/nom d'hôte DNS ou un nom de port non (par exemple telnet the.host.name serviceservice est pas un nom de service enregistré.)

Vérifiez que CONNECT_URL contient une URL valide.

EDIT: Je ne suis pas un programmeur Ruby, mais je ne me dérangerait pas que les paris Net::HTTP.new nécessite un nom d'hôte (par exemple www.facebook.com) comme premier argument, pas une URL complète (par exemple www.facebook .com/login.php? method = oauth).

9

Vous obtenez également cette erreur lorsque vous n'avez pas de connexion Internet, car une recherche DNS est souvent la première chose qui se produit lors de l'établissement d'une connexion TCP à l'aide d'un nom d'hôte.

Débranchez votre câble réseau et essayer:

Socket.getaddrinfo("www.example.com", "http") 
# => SocketError: getaddrinfo: nodename nor servname provided, or not known 
+0

Je reçois cette erreur de mon serveur quand j'essayer d'utiliser git avec gitlab ce. Le message est émis dans mon terminal via ssh. L'erreur était là Twp jours, et maintenant il est parti. Peut-être que mon hôte linode rencontrait des problèmes de DNS? – trusktr

+0

Cela a fonctionné, j'ai tourné mon 'wifi' et l'ai 'allumé' et voilà son fait – illusionist

Questions connexes