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

Authorizationヘッダーの使用方法を理解するために、oauthが行うことを実行しようとしています。次のエラーも発生します。LinkedInAPIに接続しようとしています。

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

誰かが私を正しい方向に動かしてくれたら本当にありがたいです。

4

2 に答える 2

18

「名前またはサービスが不明」はソケットレベルのエラーであり、通常、無効なIPアドレス/ DNSホスト名、または未登録のポート名(たとえば、が登録されたサービス名telnet the.host.name serviceではない場合)のいずれかを指します。service

CONNECT_URL有効なURLを保持していることを確認してください。

編集: 私はRubyプログラマーではありNet::HTTP.newませんが、完全なURL(www.facebook.com/login.phpなど)ではなく、最初の引数としてホスト名(www.facebook.comなど)が必要なことに賭けてもかまいません。 method = oauth)。

于 2010-04-09T14:46:44.810 に答える
9

また、ホスト名を使用してTCP接続を確立するときにDNSルックアップが最初に発生することが多いため、インターネット接続がない場合にもこのエラーが発生します。

ネットワークケーブルを抜いて、次のことを試してください。

Socket.getaddrinfo("www.example.com", "http")
# => SocketError: getaddrinfo: nodename nor servname provided, or not known
于 2011-11-16T16:56:55.147 に答える