Ruby pull user twitter timeline
| require 'rubygems' | |
| require 'httparty' | |
| require 'debugger' | |
| require 'erb' | |
| sig_hash1 = { | |
| "oauth_consumer_key" => "cuYaigojU9A7ZWtE4QWog", | |
| "oauth_nonce" => rand(10 ** 30).to_s.rjust(30,'0').to_s, | |
| "oauth_signature_method" => "HMAC-SHA1", | |
| "oauth_timestamp" => Time.now.to_i.to_s, | |
| "oauth_token" => "352432920-GFPIddUT5z8jPRs8vukZccdiG0nKPhy60NuoJtGU", | |
| "oauth_version" => "1.0", | |
| "screen_name" => "AkshayKhole" | |
| } | |
| sig_hash = {} | |
| sig_hash1.each do |k, v| | |
| sig_hash.merge!(ERB::Util.url_encode(k) => ERB::Util.url_encode(v)) | |
| end | |
| parameter_string = "" | |
| sig_hash.keys.sort.each do |key| | |
| parameter_string += key | |
| parameter_string += "=" | |
| parameter_string += sig_hash[key] | |
| parameter_string += "&" | |
| end | |
| parameter_string.slice!(-1) | |
| sig_string = "GET" | |
| sig_string += "&" | |
| sig_string += ERB::Util.url_encode("https://api.twitter.com/1/statuses/user_timeline.json") | |
| sig_string += ERB::Util.url_encode(parameter_string) | |
| sig_string += "&" | |
| puts "Signature base string----> #{sig_string}" | |
| puts '' | |
| consumer_secret = ERB::Util.url_encode("0XyrTSjnWEGCFA9CfBpWOdp5UpoQ9NkJDhdWWBLH2f4") | |
| token_secret = ERB::Util.url_encode("UFEP4ld0FvCZAJQwjv36e3jbT7DU3gqMV0aWCCn2Q") | |
| signing_key = consumer_secret + "&" + token_secret | |
| final_signature = Base64.encode64(Digest::HMAC.hexdigest(sig_string, signing_key, Digest::SHA1)) | |
| puts "final signature--> #{final_signature}" | |
| puts '' | |
| header_string = "Oauth " | |
| header_string_hash = sig_hash | |
| header_string_hash.delete("screen_name") if header_string_hash.key?("screen_name") | |
| header_string_hash.merge!("oauth_signature" => final_signature) | |
| header_string_hash.each do |key, value| | |
| header_string += ERB::Util.url_encode(key) | |
| header_string += "=" | |
| header_string += %Q{"} | |
| header_string += ERB::Util.url_encode(value) | |
| header_string += %Q{"} | |
| header_string += ", " | |
| end | |
| header_string.slice!(-1) | |
| header_string.slice!(-1) | |
| puts header_string | |
| res = HTTParty.get("https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name='AkshayKhole'", | |
| :headers => { | |
| "Authorization" => header_string}) | |
| puts '' | |
| puts res.inspect | |
| puts '' | |
| puts 'Parsed response ----> ' | |
| puts res.parsed_response | |
| # Output on run | |
| # $ ruby fetch_timeline_test.rb | |
| # Signature base string----> GET&https%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fuser_timeline.jsonoauth_consumer_key%3DcuYaigojU9A7ZWtE4QWog%26oauth_nonce%3D406709817327445173332558882613%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1380018315%26oauth_token%3D352432920-GFPIddUT5z8jPRs8vukZccdiG0nKPhy60NuoJtGU%26oauth_version%3D1.0%26screen_name%3DAkshayKhole& | |
| # final signature--> MTlmMjkyMjZmMGQ0NmQyZWU2N2UxMjdiZmY2MzVkNDYyOThkMWQ0Yw== | |
| # Oauth oauth_consumer_key="cuYaigojU9A7ZWtE4QWog", oauth_nonce="406709817327445173332558882613", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1380018315", oauth_token="352432920-GFPIddUT5z8jPRs8vukZccdiG0nKPhy60NuoJtGU", oauth_version="1.0", oauth_signature="MTlmMjkyMjZmMGQ0NmQyZWU2N2UxMjdiZmY2MzVkNDYyOThkMWQ0Yw%3D%3D%0A" | |
| # #<HTTParty::Response:0x7fd393c18f90 parsed_response={"errors"=>[{"message"=>"Could not authenticate you", "code"=>32}]}, @response=#<Net::HTTPUnauthorized 401 Unauthorized readbody=true>, @headers={"content-length"=>["63"], "content-type"=>["application/json; charset=utf-8"], "date"=>["Tue, 24 Sep 2013 10:25:16 UTC"], "server"=>["tfe"], "set-cookie"=>["guest_id=v1%3A138001831645053265; Domain=.twitter.com; Path=/; Expires=Thu, 24-Sep-2015 10:25:16 UTC"], "strict-transport-security"=>["max-age=631138519"], "connection"=>["close"]}> | |
| # Parsed response ----> | |
| # {"errors"=>[{"message"=>"Could not authenticate you", "code"=>32}]} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment