Class: OmniAuth::Strategies::Weibo

Inherits:
OAuth
  • Object
show all
Defined in:
lib/omniauth/strategies/weibo.rb

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Weibo

Returns a new instance of Weibo.



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/omniauth/strategies/weibo.rb', line 9

def initialize(*args)
  super
  # taken from https://github.com/intridea/omniauth/blob/0-3-stable/oa-oauth/lib/omniauth/strategies/oauth/tsina.rb#L15-21
  options.client_options = {
    :access_token_path => '/oauth/access_token',
    :authorize_path => '/oauth/authorize',
    :realm => 'OmniAuth',
    :request_token_path => '/oauth/request_token',
    :site => 'http://api.t.sina.com.cn',
  }
end

Instance Method Details

#consumerObject



21
22
23
24
# File 'lib/omniauth/strategies/weibo.rb', line 21

def consumer
  consumer = ::OAuth::Consumer.new(options.consumer_key, options.consumer_secret, options.client_options)
  consumer
end

#raw_infoObject



64
65
66
67
68
# File 'lib/omniauth/strategies/weibo.rb', line 64

def raw_info
  @raw_info ||= MultiJson.decode(access_token.get('/account/verify_credentials.json').body)
rescue ::Errno::ETIMEDOUT
  raise ::Timeout::Error
end

#request_phaseObject



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/omniauth/strategies/weibo.rb', line 47

def request_phase
  request_token = consumer.get_request_token(:oauth_callback => callback_url)
  session['oauth'] ||= {}
  session['oauth'][name.to_s] = {'callback_confirmed' => true, 'request_token' => request_token.token, 'request_secret' => request_token.secret}

  if request_token.callback_confirmed?
    redirect request_token.authorize_url(options[:authorize_params])
  else
    redirect request_token.authorize_url(options[:authorize_params].merge(:oauth_callback => callback_url))
  end

rescue ::Timeout::Error => e
  fail!(:timeout, e)
rescue ::Net::HTTPFatalError, ::OpenSSL::SSL::SSLError => e
  fail!(:service_unavailable, e)
end