前段时间做了一个微信第三方授权,一直想写一篇文章分享一下,但是总是忙,今天终于有空闲给写出来了,整个流程很简单清晰,在签名验证的地方可能有点儿小坑,并且在用户取消授权的时候,微信api说的是会把消息推送到回调地址中,在这里强调一下这个回调地址不是授权时候的回调地址,而是你申请第三方平台时候填写的授权地址,闲话少说进入正题。(如有问题,可留言交流)
简单流程先描述
用户点击授权按钮 -> 获取第三方令牌 -> 获取预授权码 -> 进入微信授权页面 -> 用户扫码授权 -> 微信推送授权结果
第一步 维护微信推送的 component_verify_ticket
在第三方平台创建审核通过后,微信服务器会向其“授权事件接收URL”每隔10分钟定时推送component_verify_ticket,该ticket是加密的xml串,需要解码获取到ticket值(用于获取预授权码);
解密用的是php的加解密模块(安装php自带的),代码用的是微信提供的。
代码如下
$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_