class Sorcery::Providers::Wechat
This class adds support for OAuth with open.wx.qq.com.
config.wechat.key = <key> config.wechat.secret = <secret> ...
Attributes
auth_url[RW]
mode[R]
param_name[R]
parse[R]
scope[RW]
token_url[RW]
user_info_path[RW]
Public Class Methods
new()
click to toggle source
Calls superclass method
Sorcery::Providers::Base::new
# File lib/sorcery/providers/wechat.rb, line 15 def initialize super @scope = 'snsapi_login' @auth_url = 'https://open.weixin.qq.com/connect/qrconnect' @user_info_path = 'https://api.weixin.qq.com/sns/userinfo' @token_url = 'https://api.weixin.qq.com/sns/oauth2/access_token' @state = SecureRandom.hex(16) @mode = :body @parse = :json @param_name = 'access_token' end
Public Instance Methods
get_access_token(args, options = {})
click to toggle source
# File lib/sorcery/providers/wechat.rb, line 54 def get_access_token(args, options = {}) client = build_client(options) client.auth_code.get_token( args[:code], { appid: @key, secret: @secret, parse: parse }, options ) end
get_user_hash(access_token)
click to toggle source
# File lib/sorcery/providers/wechat.rb, line 39 def get_user_hash(access_token) response = access_token.get( user_info_path, params: { access_token: access_token.token, openid: access_token.params['openid'] } ) {}.tap do |h| h[:user_info] = JSON.parse(response.body) h[:uid] = h[:user_info]['unionid'] end end
login_url(_params, _session)
click to toggle source
# File lib/sorcery/providers/wechat.rb, line 63 def login_url(_params, _session) authorize_url authorize_url: auth_url end
process_callback(params, _session)
click to toggle source
# File lib/sorcery/providers/wechat.rb, line 67 def process_callback(params, _session) args = {}.tap do |a| a[:code] = params[:code] if params[:code] end get_access_token( args, token_url: token_url, mode: mode, param_name: param_name ) end