PHP tp5微信扫码登陆

PC端微信公众号扫码关注登陆

一  公众号信息设置

(注:公众号必须具备网页授权获取用户基本信息

    1.  服务器配置
      1.  启用服务器配置
      2.  填写服务器配置信息

其中url是之后公众号收到的信息微信都将推送到你这个url上

      1. 服务器端验证接口

要判断微信有没有传echostr参数,第一次验证时微信时有传echostr参数,之后微信推送事件给你这个接口时是不带echostr参数,不做三元运算就会报错。$this->reponseMwg是验证完后微信推送事件给我们 我们处理事件的接口(下文附带代码)

    1. 配置接口信息
      1.  配置网页授权获取用户基本信息

开发——>接口权限——>网页服务——>网页授权获取用户基本信息——>设置

这个的话很简单的,就下载个证数放到域名/网站的根目录下 不会的自行百度下,我就不说了

 

配置完成后可以查看下

 

 

    1.  获取二维码

IndexController控制器

//初始化

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是本人做其他逻辑所需你们可以不用加

 

WeiXin 类

 

获取token

 

Config配置文件

appid 和 appsecret分别为公众号的appid和密钥

 

前端

前端获取到后台传来ticket  然后轮询请求登陆验证接口

 

前端轮询JS

 

登陆验证接口

 

 

回到1.1.3中的$this->reponseMwg()

其中的$this->callback()是你自己处理自己业务逻辑的方法

$postObj->EventKey  是你生成二维码时的$scene_id

$postObj->Ticket   是票据

 

你在callback里面修改存取票据的验证表中is_login的值改成1,即可  

到这里你也可以获取用户的微信信息

 

 

 

 

 

如有不懂 可+QQ2421168518我们一起讨论

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHP小渣渣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值