- 判定是否在微信中打开
def wechat?
request.user_agent =~ /MicroMessenger/i
end
- 分别调用 微信网页扫码 或 公众号授权
def wechat_cli
@wechat_cli ||= if wechat?
WechatMp.new('key', 'secret') # 微信公众号
else
Wechat.new('key', 'secret') # 微信扫码
end
end
- 跳转页
redirect wechat_cli.authorize_uri, permanent: true
- 回调处理
unauthorized('未获得授权') if params[:code].blank?
token = wechat_cli.token(params[:code])
if token && token['unionid']
# 通过 token['unionid'] 查询是否已存在
# 通过 wechat_cli.userinfo(token) 获取用户信息
end