Class: OmniAuth::Strategies::WeChatService
- Defined in:
- lib/omniauth/strategies/wechat_service.rb
Instance Method Summary collapse
- #authorize_params ⇒ Object
- #callback_phase ⇒ Object
- #raw_info ⇒ Object
- #request_phase ⇒ Object
- #token_params ⇒ Object
Methods inherited from OAuth2
Instance Method Details
#authorize_params ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/omniauth/strategies/wechat_service.rb', line 41 def params = ..merge({ appid: .client_id, redirect_uri: callback_url, response_type: 'code', state: request.params['state'], scope: request.params['scope'] || 'snsapi_userinfo' }) if OmniAuth.config.test_mode @env ||= {} @env["rack.session"] ||= {} end unless .provider_ignores_state params[:state] = SecureRandom.hex(24) session["omniauth.state"] = params[:state] end params end |
#callback_phase ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/omniauth/strategies/wechat_service.rb', line 64 def callback_phase # 其它 app 需要获取微信openid 时,将 callbackurl 传入 state 参数 if request.params['state'].match(/\Ahttps?:\/\/(.*\.)?geekpark\.net\/.*\z/) uri = URI(request.params['state']) query = Rack::Utils.parse_nested_query(uri.query).merge(code: request.params['code']) uri.query = URI.encode_www_form query env['omniauth.redirect'] = uri.to_s call_app! else super end end |
#raw_info ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/omniauth/strategies/wechat_service.rb', line 23 def raw_info @raw_info ||= begin response = access_token.get( '/sns/userinfo', { params: { access_token: access_token.token, openid: access_token['openid'], lang: 'zh-CN' }, parse: :json } ).parsed log :debug, response response end end |
#request_phase ⇒ Object
37 38 39 |
# File 'lib/omniauth/strategies/wechat_service.rb', line 37 def request_phase redirect client.()+'#wechat_redirect' end |
#token_params ⇒ Object
60 61 62 |
# File 'lib/omniauth/strategies/wechat_service.rb', line 60 def token_params { appid: .client_id, secret: .client_secret } end |