@@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 делает в попытке понять, как использовать заголовки Авторизации. Я также получаю следующую ошибку. Я пытаюсь соединиться с linkedin API.
/usr/lib/ruby/1.8/net/http.rb:560:in 'initialize': getaddrinfo: Name or service not known (SocketError)
Я был бы очень признателен, если кто-то мог бы пошагово переместить меня в правильном направлении.
«Имя или служба не известны» - это ошибка на уровне сокета, которая обычно указывает либо на недопустимый IP-адрес / имя хоста DNS, или незарегистрированное имя порта (например, telnet the.host.name service
, где service
не является зарегистрированным именем службы.)
Убедитесь, что CONNECT_URL
содержит действительный URL.
РЕДАКТИРОВАТЬ: Я не программист на Ruby, но я бы не возражал против того, что Net :: HTTP.new
требует в качестве первого имени хоста (например, www.facebook.com) аргумент, а не полный URL (например, www.facebook.com/login.php?method=oauth).