600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > php 公众号 验证失败 微信公众号Token验证失败的几种情况及解决办法

php 公众号 验证失败 微信公众号Token验证失败的几种情况及解决办法

时间:2023-08-05 18:04:30

相关推荐

php 公众号 验证失败 微信公众号Token验证失败的几种情况及解决办法

微信公众号Token验证失败的几种情况及解决办法

1. 思路看验证的文件,编码是否是:utf-8 无bom头的

2. thinkphp框架,要关闭调试模式,开启调试模式容易有错误代码出现,导致验证失败

3. 当是框架路由地址时,接收的参数里,会有个_URL_单元,要把这个单元删除。

下边是部分代码publicfunctionindex(){

//判断是否是第一次接入echostr

if(!empty($_GET['echostr'])){

echo$this->checkSign();

}else{

//接收处理数据

$this->acceptMsg();

}

}

/**

*初次接入校验

*@returnstring

*/

privatefunctioncheckSign()

{

//得到微信公众号发过来的数据

$input=$_GET;

//把echostr放在临时变量中

$echostr=$input['echostr'];

$signature=$input["signature"];

//在数组中删除掉

unset($input['echostr'],$input['signature'],$input['_URL_']);

//在数据中添加一个字段token

$input['token']=self::TOKEN;

/*===========微信发来的数据==========*/

{"signature":"086cdab9031c8ed0168e1a0942fb811bbe1b239a",

"echostr":"2179111007072545391",

"timestamp":"1587789869",

"nonce":"825612036",

"_URL_":["Wxcallback","index"]

}

以上【_URL_】这个当框架路由时会有,所以要删掉否则生成字符验证不通过

最后input数组只剩下

["timestamp"=>"1587789609","nonce"=>"177753193","token"=>"abcd789"]

/*========================*/

//进行字段排序

$tmpStr=implode($input);

//进行加密操作

$tmpStr=sha1($tmpStr);

//进行对比

if($tmpStr==$signature){

//校验成功要返回echostr

return$echostr;

}else{

return'';

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。