Class: OmniAuth::Strategies::WeChat
- Inherits:
-
Object
- Object
- OmniAuth::Strategies::WeChat
- Includes:
- OmniAuth::Strategy
- Defined in:
- lib/omniauth/strategies/wechat.rb
Defined Under Namespace
Classes: CallbackError
Instance Attribute Summary collapse
-
#access_token ⇒ Object
Returns the value of attribute access_token.
Instance Method Summary collapse
- #authorize_params ⇒ Object
- #callback_phase ⇒ Object
- #callback_url ⇒ Object
- #client(opt = {}) ⇒ Object
- #raw_info ⇒ Object
- #request_phase ⇒ Object
- #token_params ⇒ Object
Instance Attribute Details
#access_token ⇒ Object
Returns the value of attribute access_token.
29 30 31 |
# File 'lib/omniauth/strategies/wechat.rb', line 29 def access_token @access_token end |
Instance Method Details
#authorize_params ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/omniauth/strategies/wechat.rb', line 52 def state_param = SecureRandom.hex(24) ..merge({:appid=>.appid, :redirect_uri => callback_url, :response_type => 'code', :scope => 'snsapi_userinfo', :state=>state_param }) end |
#callback_phase ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/omniauth/strategies/wechat.rb', line 70 def callback_phase if request.params['code'].nil? ||!request.params['code'].present? raise CallbackError.new('noauthorize','user cancel authorizing') end self.access_token = build_access_token log :debug,access_token['openid'] super #self.access_token = refresh_access_token(access_token) if access_token.expired? rescue ::OAuth2::Error, CallbackError => e fail!(:invalid_credentials, e) rescue ::MultiJson::DecodeError => e fail!(:invalid_response, e) rescue ::Timeout::Error, ::Errno::ETIMEDOUT, Faraday::Error::TimeoutError => e fail!(:timeout, e) rescue ::SocketError, Faraday::Error::ConnectionFailed => e fail!(:failed_to_connect, e) end |
#callback_url ⇒ Object
36 37 38 |
# File 'lib/omniauth/strategies/wechat.rb', line 36 def callback_url full_host + script_name + callback_path+ query_string end |
#client(opt = {}) ⇒ Object
31 32 33 34 |
# File 'lib/omniauth/strategies/wechat.rb', line 31 def client(opt={}) = ..merge(opt) ::OAuth2::Client.new(.appid, .secret, deep_symbolize()) end |
#raw_info ⇒ Object
112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/omniauth/strategies/wechat.rb', line 112 def raw_info @raw_info ||= begin response = access_token.get( '/sns/userinfo', {:params => {:access_token=>access_token.token, :openid => uid, :lang =>'zh-CN'}, :parse => :json} ).parsed log :debug,response response end end |
#request_phase ⇒ Object
48 49 50 |
# File 'lib/omniauth/strategies/wechat.rb', line 48 def request_phase redirect client.()+'#wechat_redirect' end |
#token_params ⇒ Object
66 67 68 |
# File 'lib/omniauth/strategies/wechat.rb', line 66 def token_params {:appid=>.appid,:secret=>.secret} end |