您的位置:首页 > 移动开发 > 微信开发

微信的token验证

2018-01-21 22:21 309 查看
  微信的token验证,如果大家直接复制微信公众号上指引文件里面的代码,我用过,当时才开始学习,现在想想真是心里一万个MMP,新手时期很多都不懂,非常简单的东西都不会,会在这些上面浪费大量的时间。

下面是示例代码,但是我们往往忽略了还需要将随机字符串返回给微信公众号平台,因为这个该死的示例程序并没有写这句话。

private function checkSignature()
{
_GET["signature"];
_GET["timestamp"];
_GET["nonce"];

tmpArr = array(timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );

if( signature ){
return true;
}else{
return false;
}
}

以下是我写的代码,将第二句后面括号里的逗号后面双引号内容改为你自己设置的token就可以验证了。

<?php 

define("TOKEN", "把你设置的token替换掉本引号内的内容");//将token定义为常量

$signature = $_GET["signature"];//取出加密签名

$timestamp = $_GET["timestamp"];//取出时间戳,整数形式

$nonce = $_GET["nonce"];//取出随机数

$echoStr = $_GET["echostr"];//取出随机字符串

$token = TOKEN;//将定义的常量取过来用

$tmpArr = array($token, $timestamp, $nonce);//将三个字符串合成一个数组

sort($tmpArr, SORT_STRING);//将数组进行字典排序

$tmpStr = implode( $tmpArr );//将数组合成一个字符串

$tmpStr = sha1( $tmpStr );//把合成的字符串进行哈希加密,具体参照https://baike.baidu.com/item/SHA1/8812671?fr=aladdin

//对获得的加密签名与微信公众号发过来的加密签名进行对比

if( $tmpStr == $signature )

    echo $echoStr;//返回随机字符串
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息