class OmniAuth::Strategies::Wechat

Public Instance Methods

callback_url() click to toggle source
# File lib/omniauth/strategies/wechat.rb, line 19
def callback_url
  full_host + script_name + callback_path
end
raw_info() click to toggle source
# File lib/omniauth/strategies/wechat.rb, line 51
def raw_info
  @uid ||= access_token["openid"]
  @raw_info ||= begin
    access_token.options[:mode] = :query
    if access_token["scope"]&.include?("snsapi_login")
      access_token.get("/sns/userinfo", :params => { "openid" => @uid, "lang" => "zh_CN" }, parse: :json).parsed
    else
      { "openid" => @uid }
    end
  end
  @raw_info
end
request_phase() click to toggle source
# File lib/omniauth/strategies/wechat.rb, line 44
def request_phase
  params = client.auth_code.authorize_params.merge(authorize_params)
  params["appid"] = params.delete("client_id")
  params["redirect_uri"] = callback_url
  redirect client.authorize_url(params)
end

Protected Instance Methods

build_access_token() click to toggle source
# File lib/omniauth/strategies/wechat.rb, line 65
def build_access_token
  params = {
    'appid'        => client.id,
    'secret'       => client.secret,
    'code'         => request.params['code'],
    'grant_type'   => 'authorization_code',
    'redirect_uri' => callback_url
    }.merge(token_params.to_hash(symbolize_keys: true))
  client.get_token(params, deep_symbolize(options.auth_token_params))
end