开发者社区> jefferyjob> 正文

微信Token验证代码的实现

简介: 微信开放第三方API接口, 申请地址:  https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/interface&token=1865635074&lang=zh_CN 官方提供PHP开发代码下载: 点此下载 如果你的微信接口页面没有做好,提
+关注继续查看

微信开放第三方API接口,

申请地址: 

https://mp.weixin.qq.com/advanced/advanced?action=interface&t=advanced/interface&token=1865635074&lang=zh_CN

官方提供PHP开发代码下载: 点此下载

如果你的微信接口页面没有做好,提交保存的时候,会提示:验证Token失败。这个错误是因为,你的接口页面还没有反馈正确的信息给微信接口。微信在教程方面还做得不够成熟,就一个PHP示例,还是有问题的,在下篇文章我会讲到这个错误在哪。微信官方也没有跟大家说清楚怎么才能是token验证成功。下面我将给出示例告诉大家如何通过token验证。

譬如:微信接口页面是http://bbhet.com  默认页面是weixin.php,我们只需要把weixin.php的代码改为, 然后放到你得网站根目录:

官方下载地址 http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html

方法一: 简单的PHP实现Token验证

<?php
//1. 将timestamp , nonce , token 按照字典排序
$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];
$token = "你自定义的Token值 用于验证";
$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'];
	exit;
}



方法二: 封装类的代码实现Token验证

<?php
/**
  * wechat php test
  */

//define your token
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();

class wechatCallbackapiTest
{
	public function valid()
    {
        $echoStr = $_GET["echostr"];

        //valid signature , option
        if($this->checkSignature()){
        	echo $echoStr;
        	exit;
        }
    }

    public function responseMsg()
    {
		//get post data, May be due to the different environments
		$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

      	//extract post data
		if (!empty($postStr)){
                
              	$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml>
							<ToUserName><![CDATA[%s]]></ToUserName>
							<FromUserName><![CDATA[%s]]></FromUserName>
							<CreateTime>%s</CreateTime>
							<MsgType><![CDATA[%s]]></MsgType>
							<Content><![CDATA[%s]]></Content>
							<FuncFlag>0</FuncFlag>
							</xml>";             
				if(!empty( $keyword ))
                {
              		$msgType = "text";
                	$contentStr = "Welcome to wechat world!";
                	$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                	echo $resultStr;
                }else{
                	echo "Input something...";
                }

        }else {
        	echo "";
        	exit;
        }
    }
		
	private function checkSignature()
	{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];	
        		
		$token = TOKEN;
		$tmpArr = array($token, $timestamp, $nonce);
		sort($tmpArr);
		$tmpStr = implode( $tmpArr );
		$tmpStr = sha1( $tmpStr );
		
		if( $tmpStr == $signature ){
			return true;
		}else{
			return false;
		}
	}
}

?>


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Token校验失败,请检查确认 微信-消息推送
Token校验失败,请检查确认 微信-消息推送
166 0
.NET企业微信回调配置(数据回调URL和指令回调URL验证)(一)
.NET企业微信回调配置(数据回调URL和指令回调URL验证)
489 0
正则表达式--QQ微信、优酷前端 邮箱正则表达式验证 Bug
但凡稍微有点资历的程序员,都免不了要写正则表达验证算法。最近见到好几个正则表达式的Bug,抽空写出来 拿邮箱验证来说,网上绝大部分人写的邮箱验证正则表达式代码都不能验证这邮箱
80 0
微信公众平台开发(5)--验证消息的确来自微信服务器
本文目录 1. 前言 2. 构建项目 2.1 构建SpringBoot项目 2.2 编写配置文件 2.3 编写启动类 3. 验证消息来自微信 3.1 获取公众号参数 3.2 开发公众平台配置类 3.3 验证消息方法的调用 4. 小结
329 0
微信开发者模式教程URL和Token(令牌)
使用pcwap程序可以跟微信相同,成为开发者模式,然后通过PCWAP程序后台可以配置关键词回复(文本和站内内容),关注时回复(文本和站内内容),生成自定义菜单(服务号和认证过的订阅号可用); 成为微信开者模式教程如下: 第一步:登录https://mp.
1395 0
web程序使用微信验证登录
是这样的一个功能需求:从微信公众号点一个链接时,能获取到微信用户的信息,然后核实是不是系统用户,并以此做为登录的凭定 个人广告时间本人博客:www.lixiang.red 对程序或者代码有问题,可参见博客上的联系方式~~ 谢谢大家支持 准备工作 经过认证的微信公众号(没有认证过的还没实验,以后实验了会回来更新的) 微信开发者工具 中台spring boot 前端html+vue 交互:跨域调用接口 附录: 本文不是web教程,有关于spring boot的知识,以及跨域的知识在本文中没有放出来。
927 0
如何快速通过对方微信好友验证!
我们增加对方微信好友时,成功率不高,经常被拒绝……我们发现,验证信息这样写 通过率比较高好久没见了,终于找到你了好久不见,终于找到你了你好,老同学亲,在哪里呢?亲,吃午饭了吗?晕死,怎么还没有...
1004 0
【微信Java开发 --2】接入微信公众平台开发,配置自己的服务器,验证过程【验证服务器、自定义菜单、微信端消息分发】
接入微信公众平台开发,开发者需要按照如下步骤完成: 1、填写服务器配置 2、验证服务器地址的有效性 3、依据接口文档实现业务逻辑好我们就开始:1.登录微信公众平台,进入基本配置  修改配置,将自己的服务器的URL地址,配置在此处: 填写完成后,【先不用 提交】,先进行第二步 服务器端代码的配置 ...
2457 0
微信token验证失败的解决方法
一、问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况  1. token校验失败 这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的方法检查 2. 请求URL超时 你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了。
1992 0
+关注
jefferyjob
继承,是幸福的延续;重载,是幸福的重生。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
微信PaxosStore简介
立即下载
微信移动客户端数据存储优化实践
立即下载
微信广告引擎与播放节奏算法实践
立即下载