PHP 您现在的位置是:首页 > 开发笔记 > PHP
微信公众平台基本配置token验证失败
来源:灰大狼
发布时间:2018-07-20
最后更新:2019-05-11
4933已围观
摘要微信公众平台基本配置时,问题提示token验证失败,代码就是从网上找到的,结果是因为少了一个参数……
在微信开发学习过程中,有一项微信公众平台基本配置,配置好后,网站接管平台的消息管理。但是配置过程中,老是提示token验证失败,经过代码调试,发现自己算出来的签名和微信平台发过来的的确不一样,上网找了好一大顿,最终发现,仅仅是少了一个参数!
首先,参数运算的数组有3个数据,分别是token、timestamp和nonce,不是开发文档中说明的两个。其次,排序函数sort要有第二个参数:SORT_STRING常量。
正确代码如下:
private function checkSignature(){ $signature = $_GET['signature']; //获取签名参数 $timestamp = $_GET['timestamp']; //获取时间戳参数 $nonce = $_GET['nonce']; //获取随机字符串 $token = 'myToken'; //微信公众平台设置的令牌,可以通过配置令牌等方式获取,这里直接写入了 $tmpArr = [$timestamp, $nonce, $token]; //定义参数数组,要有token sort($tmpArr, SORT_STRING); //重新排序数组,注意第2个参数一定要有 $tmpStr = implode($tmpArr); //将数组聚合成字符串 $tmpStr = sha1($tmpStr); //算出签名(5.3版本以上的PHP可以将这两行合并成一行) if ($tmpStr == $signature) { return true; } else { return false; } }
该校验函数为类内部调用的私有函数,调用判断一下是否合法。
if ($this->checkSignature) { exit($_GET['echostr']); //检验通过,返回规定的回响码即可 }
其它业务逻辑,根据自己的实际情况开发即可。
很赞哦! (603)
上一篇: date()函数中format参数一览
下一篇: CentOS 安装swoole报错
评论
猜你喜欢
站点信息
- 开发框架:ThinkCMF 8.0.1
- PHP版本:8.3.15
- 操作系统:Linux
- 运行环境:nginx/1.24.0
- 数据库: MySQL 8.0.24