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

मैं क्या OAuth कैसे प्राधिकरण हेडर का उपयोग करने के लिए समझ में करने की कोशिश में करता है वह करने की कोशिश कर रहा हूँ। मुझे निम्न त्रुटि भी मिल रही है। मैं लिंक्डइन एपीआई से कनेक्ट करने की कोशिश कर रहा हूं।शुद्ध/http.rb: 560: `प्रारंभ 'में: getaddrinfo: नाम या सेवा नहीं जाना जाता है (SocketError)

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

मैं इसे अगर किसी ने मुझे सही दिशा में खिसकाने सकता है वास्तव में सराहना करेंगे।

उत्तर

18

"नाम या सेवा ज्ञात नहीं" एक सॉकेट-स्तर की त्रुटि जो आम तौर पर या तो एक अमान्य आईपी पते/डीएनएस होस्ट नाम, या एक अपंजीकृत बंदरगाह नाम की ओर इशारा करता है (उदाहरण के telnet the.host.name service जहां service पंजीकृत सेवा नाम नहीं है।)

जांचें कि CONNECT_URL एक मान्य यूआरएल रखता है।

संपादित करें: मैं एक रूबी प्रोग्रामर नहीं हूँ, लेकिन मैं दांव लगा कि Net::HTTP.new एक होस्ट नाम (उदाहरण के लिए www.facebook.com) पहला तर्क है, न कि एक पूर्ण यूआरएल के रूप में की आवश्यकता है कोई फ़र्क नहीं पड़ेगा (जैसे www.facebook .com/login.php? विधि = OAuth)।

9

जब आपके पास कोई इंटरनेट कनेक्शन नहीं है, तो आपको यह त्रुटि भी मिलती है क्योंकि DNS लुकअप अक्सर पहली चीज होती है जो मेजबाननाम का उपयोग करते हुए एक टीसीपी कनेक्शन स्थापित करते समय होता है।

अपने नेटवर्क केबल अनप्लग करें और प्रयास करें:

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

मैं अपने सर्वर से इस त्रुटि मिल रही है जब मैं GitLab साथ Git का उपयोग कर प्रयास करें। संदेश एसएसएच के माध्यम से मेरे टर्मिनल में outputted हो जाता है। त्रुटि दो दिन पहले थी, और अब यह चला गया है। शायद मेरा लिनोड होस्ट DNS समस्या का सामना कर रहा था? – trusktr

+0

यह काम किया, मैंने अपना 'वाईफाई' चालू कर दिया और 'चालू' और वॉयला चालू कर दिया – illusionist