2010-04-09 10 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 

Staram się robić to, co robi OAuth, próbując zrozumieć, jak korzystać z nagłówków zezwolenia. Otrzymuję również następujący błąd. Próbuję połączyć się z połączonym API.netto/http.rb: 560: w `zainicjować ': getaddrinfo: Nazwa lub usługa nie znane (Błąd łączy)

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

będę naprawdę wdzięczny, jeśli ktoś mógłby sugerować mnie we właściwym kierunku.

Odpowiedz

18

„Nazwa lub usługa nie znane” jest błąd gniazdo na poziomie, który zwykle wskazuje albo do hosta/adres DNS nieważny IP lub niezarejestrowanej nazwy portu (np telnet the.host.name service gdzie service nie jest zarejestrowanym nazwa usługi).

Sprawdź, czy CONNECT_URL posiada prawidłowy URL.

EDIT: Nie jestem programista Ruby, ale nie miałbym nic przeciwko zakłady, że Net::HTTP.new wymaga hosta (np www.facebook.com) jako pierwszy argument, a nie pełny adres URL (np www.facebook .com/login.php? method = oauth).

9

Ten błąd występuje również, gdy nie masz połączenia z internetem, ponieważ wyszukiwanie DNS jest często pierwszą rzeczą, która ma miejsce podczas nawiązywania połączenia TCP za pomocą nazwy hosta.

Odłącz kabel sieciowy i spróbuj:

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

dostaję ten błąd z mojego serwera przy próbie korzystania z GitLab git. Wiadomość zostanie wysłana w moim terminalu przez ssh. Błąd był tam Twp dni temu, a teraz go nie ma. Może mój host z linkiem miał problemy z DNS? – trusktr

+0

To działało, zmieniłem moje 'wifi' i włączyłem' on' i voila To zrobione – illusionist