赞
踩
(注:公众号必须具备网页授权获取用户基本信息)
其中url是之后公众号收到的信息微信都将推送到你这个url上
要判断微信有没有传echostr参数,第一次验证时微信时有传echostr参数,之后微信推送事件给你这个接口时是不带echostr参数,不做三元运算就会报错。$this->reponseMwg是验证完后微信推送事件给我们 我们处理事件的接口(下文附带代码)
开发——>接口权限——>网页服务——>网页授权获取用户基本信息——>设置
这个的话很简单的,就下载个证数放到域名/网站的根目录下 不会的自行百度下,我就不说了
配置完成后可以查看下
//初始化
public function _initialize()
{
$this->data = input();
$this->loginTicket = new AgentTicketModel;
$this->weixin = new WeiXin;
}
//获取二维码
Public function getCode(){
$scene_id = rand(1000,9999); //这个时二维码的场景值,后期用户扫码该二维码就可以获取这个场景值,我们就知道该用户通过什么码进来,实现不同的业务逻辑 ,这里的话就不需要,我们只是简单的扫码登陆,无需判断他是通过什么码进来,所有可以随机生成就好
//获取二维码票据
$result = $this->weixin->code($scene_id);
//将微信返回的结果转化成数组
$result = json_decode($result);
$result = (array)$result;
//请求成功
if (!isset($result['errcode'])) {
$ticket = $result['ticket'];
//用票据向微信换取二维码路径
$ticket_img = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($ticket);
//这里我是把票据存进数据库,再把票据传给前端,前端用这个票据请求我的验证接口,如果接口返回验证通过,则说明用户扫码关注成功(注:这里你可以存一开始自己设置的$scene_id 一样的道理,不过个人觉得票据稳妥,而且可以不一定要存进数据库,也可以存session 看个人喜好)
$this->loginTicket->addTicket($ticket);
$this->assign('ticket',$ticket);
$this->assign('image',$ticket_img);
return $this->fetch();
} else {
echo '发生错误:错误代码 ' . $json['errcode'] . ',微信返回错误信息:' . $json['errmsg'];
exit;
}
}
其中is_login就是检验用户是否登陆成功 opneid和check是本人做其他逻辑所需你们可以不用加
Config配置文件
appid 和 appsecret分别为公众号的appid和密钥
前端获取到后台传来ticket 然后轮询请求登陆验证接口
前端轮询JS
其中的$this->callback()是你自己处理自己业务逻辑的方法
$postObj->EventKey 是你生成二维码时的$scene_id
$postObj->Ticket 是票据
你在callback里面修改存取票据的验证表中is_login的值改成1,即可
到这里你也可以获取用户的微信信息
如有不懂 可+QQ2421168518我们一起讨论
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。