Sha256: 6229454cae8dafefa26f674ad36bad7b4c8119ac94e7ba4ae2602ac205219a3c

Contents?: true

Size: 1.27 KB

Versions: 3

Compression:

Stored size: 1.27 KB

Contents

module Pingpp
  module WxPubOauth
    def self.create_oauth_url_for_code(app_id, redirect_url, more_info = false)
      query_parts = {
        'appid' => app_id,
        'redirect_uri' => redirect_url,
        'response_type' => 'code',
        'scope' => more_info ? 'snsapi_userinfo' : 'snsapi_base'
      }
      query_str = Pingpp.uri_encode(query_parts)
      'https://open.weixin.qq.com/connect/oauth2/authorize?' + query_str + '#wechat_redirect'
    end

    def self.get_openid(app_id, app_secret, code)
      url = create_oauth_url_for_openid(app_id, app_secret, code)
      request_opts = {
        :url => url,
        :verify_ssl => false,
        :ssl_version => 'TLSv1',
        :method => 'GET',
        :headers => false,
        :open_timeout => 30,
        :timeout => 30
      }
      response = RestClient::Request.execute(request_opts)
      response = JSON.parse(response.body)
      response['openid']
    end

    def self.create_oauth_url_for_openid(app_id, app_secret, code)
      query_parts = {
        'appid' => app_id,
        'secret' => app_secret,
        'code' => code,
        'grant_type' => 'authorization_code'
      }
      query_str = Pingpp.uri_encode(query_parts)
      'https://api.weixin.qq.com/sns/oauth2/access_token?' + query_str
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
pingpp-2.0.2 lib/pingpp/wx_pub_oauth.rb
pingpp-2.0.1 lib/pingpp/wx_pub_oauth.rb
pingpp-2.0.0 lib/pingpp/wx_pub_oauth.rb