class GDataPlus::Authenticator::OAuth

Public Class Methods

new(options = {}) click to toggle source

Create a new instance.

Options

:consumer_key

(required)

:consumer_secret

(required)

TODO document optional options

# File lib/gdata_plus/authenticator/o_auth.rb, line 17
def initialize(options = {})
  required_options = [:consumer_key, :consumer_secret]
  optional_options = [:request_token, :request_secret, :access_token, :access_secret]
  options = Util.prepare_options(options, required_options, optional_options)

  (required_options + optional_options).each do |option_name|
    instance_variable_set :"@#{option_name}", options[option_name]
  end
end

Public Instance Methods

access_token() click to toggle source
# File lib/gdata_plus/authenticator/o_auth.rb, line 84
def access_token
  if @access_token && @access_secret
    ::OAuth::AccessToken.new(consumer, @access_token, @access_secret)
  end
end
consumer() click to toggle source
# File lib/gdata_plus/authenticator/o_auth.rb, line 27
def consumer
  ::OAuth::Consumer.new(@consumer_key, @consumer_secret,
    :request_token_url => "https://www.google.com/accounts/OAuthGetRequestToken",
    :authorize_url => "https://www.google.com/accounts/OAuthAuthorizeToken",
    :access_token_url => "https://www.google.com/accounts/OAuthGetAccessToken"
  )
end
fetch_access_token(oauth_verifier) click to toggle source

Exchanges the request token for the access token. The “oauth_verifier” is passed as a URL parameter when Google redirects the client back to your oauth_callback URL.

# File lib/gdata_plus/authenticator/o_auth.rb, line 73
def fetch_access_token(oauth_verifier)
  access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier)
  @access_token = access_token.token
  @access_secret = access_token.secret
  @request_token = nil
  @request_secret = nil
  access_token

  # TODO deal with error response
end
fetch_request_token(options = {}, additional_oauth_options = {}, additional_request_params = {}) click to toggle source

Arguments

options

(required) see options documentation below

additional_oauth_options

additional oauth params to pass to get_request_token; you will normally leave this blank

additional_request_params

additional params to pass with request; you will normally leave this blank

Options

:scope

(required) gdata scope; can be an Array or a String

:oauth_callback

(required) Google will redirect the user back to this URL after authentication

# File lib/gdata_plus/authenticator/o_auth.rb, line 49
def fetch_request_token(options = {}, additional_oauth_options = {}, additional_request_params = {})
  options = ::GDataPlus::Util.prepare_options(options, [:scope, :oauth_callback])

  additional_oauth_options.merge!(:oauth_callback => options[:oauth_callback])

  scope = options[:scope]
  scope = scope.join(" ") if scope.is_a? Array
  additional_request_params.merge!(:scope => scope)

  request_token = consumer.get_request_token(additional_oauth_options, additional_request_params)
  @request_token = request_token.token
  @request_secret = request_token.secret
  request_token
  # TODO deal with error response
end
request_token() click to toggle source
# File lib/gdata_plus/authenticator/o_auth.rb, line 65
def request_token
  if @request_token && @request_secret
    ::OAuth::RequestToken.new(consumer, @request_token, @request_secret)
  end
end
sign_request(request) click to toggle source

Adds authorization header to the specified Typeoeus::Request. The same request is also returned.

# File lib/gdata_plus/authenticator/o_auth.rb, line 91
def sign_request(request)
  raise ArgumentError, "request must be a Typeoeus::Request" unless request.is_a? ::Typhoeus::Request

  helper = ::OAuth::Client::Helper.new(request, {
    :consumer => consumer,
    :request_uri => request.url,
    :token => access_token
  })
  request.headers.merge!({"Authorization" => helper.header})
  request
end