前段时间做了一个微信第三方授权,一直想写一篇文章分享一下,但是总是忙,今天终于有空闲给写出来了,整个流程很简单清晰,在签名验证的地方可能有点儿小坑,并且在用户取消授权的时候,微信api说的是会把消息推送到回调地址中,在这里强调一下这个回调地址不是授权时候的回调地址,而是你申请第三方平台时候填写的授权地址,闲话少说进入正题。(如有问题,可留言交流)

简单流程先描述

  用户点击授权按钮 -> 获取第三方令牌 -> 获取预授权码 -> 进入微信授权页面 -> 用户扫码授权 -> 微信推送授权结果

第一步 维护微信推送的 component_verify_ticket

  在第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket,该ticket是加密的xml串,需要解码获取到ticket值(用于获取预授权码);

  解密用的是php的加解密模块(安装php自带的),代码用的是微信提供的。

  代码如下

电脑培训,计算机培训,平面设计培训,网页设计培训,美工培训,Web培训,Web前端开发培训

     $timeStamp  = empty($_GET['timestamp']) ? "" : trim($_GET['timestamp']); // 时间戳         $nonce      = empty($_GET['nonce']) ? "" : trim($_GET['nonce']); // 随机字符         $msg_sign   = empty($_GET['msg_signature']) ? "" : trim($_GET['msg_signature']); // 签名(公钥)         $encryptMsg = file_get_contents('php://input'); // xml         $xml_tree = new \DOMDocument();         $xml_tree->loadXML($encryptMsg);         $array_