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

Adı veya hizmet değil (SocketError) da bilinir. Ayrıca aşağıdaki hatayı alıyorum. Linkedin API'ye bağlanmaya çalışıyorum. Birisi bana doğru yönde dürtmek eğernet 'başlatmak `in: getaddrinfo: Ben oauth Yetkilendirme başlıklarını nasıl kullanılacağını anlamak için bir girişim yaptıklarını yapmak çalışıyorum

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

bunu takdir gerçekten olacaktır.

cevap

18

"bilinmemektedir Adı veya hizmet" genellikle geçersiz bir IP adresi/DNS ana makine adı veya kayıtlı olmayan bir liman ismi ya işaret eden bir soket seviyesinde bir hata (örneğin service tescilli bir hizmet adı değil telnet the.host.name service.)

CONNECT_URL'un geçerli bir URL'ye sahip olduğunu kontrol edin.

DÜZENLEME: (Ben Yakut programcı değilim, ama ben Net::HTTP.new ilk argüman değil, tam bir URL olarak ana makine adını (örn www.facebook.com) gerektirdiğini bahis sakıncası olmaz mesela www.facebook com/login.php? yöntem = oauth).

9

Ayrıca, bir DNS araması genellikle bir ana bilgisayar adı kullanarak bir TCP bağlantısı kurarken gerçekleşen ilk şey olduğundan, İnternet bağlantınız olmadığında da bu hatayı alırsınız.

ağ kablosunu çıkarın ve deneyin: Ben GitLab ile budala kullanmayı deneyin ne zaman

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

benim sunucudan bu hatayı alıyorum. Mesaj, terminalimde ssh ile çıkıyor. Hata, Twp gün önce oldu ve şimdi gitti. Belki de linode sunucumun DNS sıkıntısı yaşıyordu? – trusktr

+0

Bu işe yaradı, 'wifi'imi açtım ve' aç 'dedim ve iş bitti – illusionist

İlgili konular