Class: OauthChina::OAuth

Inherits:
Object
  • Object
show all
Includes:
Upload
Defined in:
lib/oauth_china.rb

Direct Known Subclasses

Douban, Netease, Qq, Sina, Sohu

Constant Summary collapse

CONFIG =
{}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Upload

#params_without_pic_field, #set_multipart_field, #sign_without_pic_field, #upload

Constructor Details

#initialize(request_token = nil, request_token_secret = nil) ⇒ OAuth

Returns a new instance of OAuth.



24
25
26
27
28
29
30
# File 'lib/oauth_china.rb', line 24

def initialize(request_token = nil, request_token_secret = nil)
  if request_token && request_token_secret
    self.request_token = ::OAuth::RequestToken.new(consumer, request_token, request_token_secret)
  else
    self.request_token = consumer.get_request_token(:oauth_callback => self.callback)
  end
end

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



20
21
22
# File 'lib/oauth_china.rb', line 20

def access_token
  @access_token
end

#consumer_optionsObject

Returns the value of attribute consumer_options.



20
21
22
# File 'lib/oauth_china.rb', line 20

def consumer_options
  @consumer_options
end

#request_tokenObject

Returns the value of attribute request_token.



20
21
22
# File 'lib/oauth_china.rb', line 20

def request_token
  @request_token
end

Class Method Details

.load(data) ⇒ Object



41
42
43
44
45
# File 'lib/oauth_china.rb', line 41

def self.load(data)
  oauth = self.new(data[:request_token], data[:request_token_secret])
  oauth.access_token = ::OAuth::AccessToken.new(oauth.consumer, data[:access_token], data[:access_token_secret]) if data[:access_token] && data[:access_token_secret]
  oauth
end

Instance Method Details

#authorize(options = {}) ⇒ Object

QQ和新浪OAuth需要verifier参数,豆瓣不需要



76
77
78
79
80
# File 'lib/oauth_china.rb', line 76

def authorize(options = {})
  return unless self.access_token.nil?
  token = self.request_token.get_access_token(options)
  self.access_token ||= ::OAuth::AccessToken.new(consumer, token.token, token.secret)
end

#authorize_urlObject



71
72
73
# File 'lib/oauth_china.rb', line 71

def authorize_url
  @authorize_url ||= request_token.authorize_url(:oauth_callback => URI.encode(callback))
end

#callbackObject



59
# File 'lib/oauth_china.rb', line 59

def callback; config["callback"]; end

#configObject



61
62
63
64
65
66
67
68
69
# File 'lib/oauth_china.rb', line 61

def config
  CONFIG[self.name] ||= lambda do
    require 'yaml'
    filename = "#{Rails.root}/config/oauth/#{self.name}.yml"
    file     = File.open(filename)
    yaml     = YAML.load(file)
    return yaml[Rails.env]
  end.call
end

#consumerObject



37
38
39
# File 'lib/oauth_china.rb', line 37

def consumer
  @consumer ||= ::OAuth::Consumer.new(key, secret, consumer_options)
end

#dumpObject



47
48
49
50
51
52
53
54
# File 'lib/oauth_china.rb', line 47

def dump
  {
    :request_token        => request_token.token,
    :request_token_secret => request_token.secret,
    :access_token         => access_token.nil? ? nil : access_token.token,
    :access_token_secret  => access_token.nil? ? nil : access_token.secret
  }
end

#keyObject



56
# File 'lib/oauth_china.rb', line 56

def key; config['key'];  end

#oauth_tokenObject

每次认证的唯一标志



33
34
35
# File 'lib/oauth_china.rb', line 33

def oauth_token
  request_token.params[:oauth_token]
end

#secretObject



57
# File 'lib/oauth_china.rb', line 57

def secret; config['secret']; end

#urlObject



58
# File 'lib/oauth_china.rb', line 58

def url; config['url']; end