ca88yzc 1

微信测验号开垦ca88yzc,微信徒人号token验证不成功的由来

Posted by

最近要启动微信项目,上个月就开始了解微信的开发,这个月要启动项目,配置微信公众号信息一直失败。为此,我甚至手工写了微信提交过来的记录,如:

测试号上填写url为配置的服务器验证的访问地址,token随便填
但要保证与自己服务器配置的token相同
ca88yzc 1

&timestamp=1510210523&nonce=2414550015&signature=30b9eeb6b1134d0a53623375c48ca734c41facb5&echostr=6863786913073725439

编写本地token验证测试文件

我眼睛看着验证信息没错,输出的echostr跟get提交来的一模一样,但是还是会出错。忍无可忍,一直无法搞定。

/**
* token验证测试页面
* @return 默认信息
*/
public function index()
{

 

  //获得几个参数
  $token = ”;//此处填写之前开发者配置的token
  $nonce = $_GET[‘nonce’];
  $timestamp = $_GET[‘timestamp’];
  $echostr = $_GET[‘echostr’];
  $signature = $_GET[‘signature’];

自己做开发也算基本上路了,还在这种坑吃亏,有点不服,最后查看日志,一点点搞定。

  //file_put_contents(‘weixin_log.txt’,
“IP=”.$_SERVER[‘REMOTE_ADDR’].PHP_EOL,FILE_APPEND);
//记录访问IP到log日志
  //file_put_contents(‘weixin_log.txt’,
“QUERY_STRING=”.$_SERVER[‘QUERY_STRING’].PHP_EOL,FILE_APPEND);//记录请求字符串到log日志
  //file_put_contents(‘weixin_log.txt’,
‘$_GET[echostr])=’.htmlspecialchars($_GET[‘echostr’]).PHP_EOL,FILE_APPEND);
//记录是否获取到echostr参数

以下是我解决问题的办法:

  //参数字典序排序
  $array = array();
  $array = array($nonce, $timestamp, $token);
  sort($array);
  //验证
  $str = sha1( implode( $array ) );//sha1加密
 
//对比验证处理好的str与signature,若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
  if( $str == $signature && $echostr ){
  ob_clean();
   echo $echostr;
 }
 else{
  //接入成功后的其他处理
  }

1.网上有人说是header要设置utf-8,我也设置了,不行;

 }

2.有人说可能是没有日志写入权限,导致信息能正常,但是页面代码不正常,打开console,发现,网页头显示500,麻蛋,这是服务器错误啊。

 

估计是腾讯一旦判断到你的500代码,就不继续了。

最后检查,发现是自己的服务器日志目录权限不足,无法写入日志!

就是这个原因,导致我浪费很多小时。

最后,我把验证微信公众号的token分享给各位兄弟,希望大家不要踩坑。

$token=’请填写你的公众号token’;

$timestamp = $_GET[‘timestamp’];
$nonce = $_GET[‘nonce’];
$signature = $_GET[‘signature’];
$array = array($timestamp,$nonce,$token);
sort($array);

//2.将排序后的三个参数拼接后用sha1加密
$tmpstr = implode(”,$array);
$tmpstr = sha1($tmpstr);

//3. 将加密后的字符串与 signature 进行对比, 判断该请求是否来自微信
if($tmpstr == $signature)
{
echo $_GET[‘echostr’];
}
return false;

另外,提醒各位兄弟,配置信息再微信测试号配置会好些,即便错了也不用每次都扫描二维码,累死人。

微信测试号地址:

个人博客:Thinkphp5
微信公众号token验证不成功的原因

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注