0.0
No commit activity in last 3 years
No release in over 3 years
Helper for OAuth 1.0
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

oauth_simple [RubyGem]¶ ↑

Example¶ ↑

Following example shows you how to obtain a request token from Twitter server:

require "oauth_simple"
req_uri_str  = 'https://api.twitter.com/oauth/request_token'
req_method   = 'POST'
consumer_sec = 'your_consumer_secret'
req_helper = OAuthSimple::RequestHelper.new(
  URI.parse( uri_str ),
  req_method,
  "#{OAuthSimple::HelperFunctions.enc_perenc(consumer_sec)}&",
  OAuthSimple::RequestParamList.new( [
    [ 'oauth_consumer_key',     'your_consumer_key'                                 ],
    [ 'oauth_signature_method', 'HMAC-SHA1'                                         ],
    [ 'oauth_timestamp',        OAuthSimple::HelperFunctions.create_timestamp_str() ],
    [ 'oauth_nonce',            OAuthSimple::HelperFunctions.create_nonce_str()     ],
    [ 'oauth_version',          '1.0'                                               ],
  ] ),
)
require 'net/https'
http = Net::HTTP.new( req_helper.host, req_helper.port )
http.use_ssl = true                          # SSLを有効に
http.verify_mode = OpenSSL::SSL::VERIFY_PEER # 認証モードをセット
http.start do |http|
  http.request_post( req_helper.qpath, req_helper.req_body,
              { 'Authorization' => req_helper.oauth_header_str } ) do |res|
    if res.code == '200'
      res.read_body do |str|
        puts 'str: ', str
      end
    end
  end
end

Alternatively, you can use OAuthSimple::HTTP, which is a subclass of Net::HTTP. Following example shows you how to obtain a temporaty credentials (request token) from Twitter server, how to obtain a token credentials (access token), and how to issue a authenticated request:

require 'net/https' # if you use ssl
require 'oauth_simple'
#
# OAuthSimple::HTTP is a subclass of Net::HTTP
http = OAuthSimple::HTTP.new( 'api.twitter.com', 443 )
#
# SSL setting
http.use_ssl     = true
http.verify_mode = OpenSSL::SSL::VERIFY_PEER # 認証モードをセット
#
# OAuth setting (this feature is provided by OAuthSimple::HTTP)
http.use_oauth = true
http.set_oauth_client_credentials( 'YOUR_CLIENT_CREDENTIALS', 'YOUR_CLIENT_SECRET' )
http.set_oauth_signature_method( 'HMAC-SHA1' ) # at this time, only 'HMAC-SHA1' is supported
#
# connection start
http.start() do |http|
  # == Obtaining Temporary Credentials ==
  token, secret = http.request_oauth_temp_credentials( '/oauth/request_token', 'oob' ) do |res_failed|
    # when response code is not '200', this block is called
    raise res_failed.body
  end
  # token and secret are set to OAuthSimple::HTTP object automatically in the request_oauth_temp_credentials method,
  # so you need not set them explicitly as follows
  #   http.set_oauth_user_credentials( token, secret )
  #
  # == Resource Owner Authorization ==
  puts "access to https://api.twitter.com/oauth/authorize?oauth_token=#{OAuthSimple::HelperFunctions.enc_perenc(token)} " + 
       'and input verifier'
  $stdout << 'verifier : '
  verifier = $stdin.gets.chomp
  #
  # == Obtaining Token Credentials ==
  token, secret = http.request_oauth_token_credentials( '/oauth/access_token', verifier ) do |res_failed|
    # when response code is not '200', this block is called
    raise res_failed.body
  end
  # token and secret are set to OAuthSimple::HTTP object automatically in the request_oauth_token_credentials method,
  # you need not set them explicitly as follows
  #   http.set_oauth_user_credentials( token, secret )
  #
  # == Authenticated Requests ==
  http.set_oauth_user_credentials( token, secret )
  http.request_get( '/1/statuses/home_timeline.json?include_entities=true' ) do |res|
    p res.code
    p res.body
  end
end