您的位置:首页 > 编程语言 > PHP开发

关于ThinkPHP框架开发微信公众号在微信后台配置服务器URL提示Token验证失败的解决方案

2016-11-16 17:43 1971 查看
本人小白,对TP框架不是很熟悉,先前接触过TP3,谈不上熟练应用,最近看慕课网的视频教程学习微信公众号开发,本着尝鲜的心态使用了ThinkPHP V5框架(慕课网视频教程中使用的是TP3,因为本人自己是个软件控,不管用的着用不着总喜欢装逼似的追求各个软件的最新版本)!

可就是当我按照视频教程按步就班的操作下来,并且微信公众号后台也设置无误的情况下提交URL时,微信后台提示我Token验证失败!试了好多次,也到TP官网论坛寻求帮助,好像遇到这个问题的人挺多的,有解决的,也有未解决的,TP的QQ群也咨询过,结果被人白眼,始终未能解决;无奈之下,网上查了好多,有的説是文件编码的问题,必须是UTF-8编码格式而且不能有BOM头 。。。这给了我一点提示,所以我试着把自己写的代码文件确保是UTF-8编码并且无BOM头,可还是没能解决问题;

最后,我想,既然官方的案例可以使用,为什么我自己写的就不可以用呢,所以我尝试着把微信官方给的案例稍作修改,最终成功解决问题!

下面是微信官方的案例代码截图===》





下面我再给大家看看ThinkPHP5默认index模块下的Index控制器代码,以及默认的index操作方法截图(TP5框架相对之前版本做了比较大的改动,官方建议把public目录作为WEB根目录)===》



不知道大家看出来什么区别没有,这个默认的控制器其实就是一个PHP类,默认的会命名空间namesapce是app\index\controller;,Index类实际上是继承自Controller类,官方説可以省力不写,而这个Index类里面有个index操作方法,这和微信官方给的示例代码中wechatCallbackapiTest类及其下的valid方法比较相似了吧?

然后我们再看看微信官方示例代码中其实是把wechatCallbackapiTest类实例化并调用其中的valid方法,而valid方法则又调用了checkSignature方法==》



所以,为了防止因为改动代码而导致错误,我只是把微信官方示例代码中的类名和方法名稍作修改,把wechatCallbackapiTest类名改成TP5框架默认的Index控制器名,把valid方法改成TP5框架默认的index操作名,又因为TP框架本身是继承自Controller类而且有命名空间namespace app\index\controller,所以我们就不需要实例化这个Index控制器了(实际上就是不需要实例化这个类),默认就走的是Index控制器下的index操作(相当于直接调用了index方法),这样一来,我们的代码主体部分还是微信官方的示例代码!



应该不会有错了吧,我们来试一下===》



点击下面的提交按钮,是不是成功了?



当然,如果你不想用默认的Index控制器的话,也可以为微信公众号单独新建一个控制器(估计没人愿意把Index控制器作为微信入口,不然网站首页放哪),比如如图Wechat控制器===》



此时微信公众号后台URL按如下填写即可===》



好了,这个问题解决了!其实也不算是解决问题,说白了,主要是避免问题,既然咱不能保证自己写的代码无误,那就先用微信官方的代码示例呗!至少看到提交成功了,心里也不会老是纠结:“妈的,才刚开始第一步就出错”了吧?第一步Token验证成功了,我们才好继续操作后面的内容不是么 。。。

把这个我自己认为是问题的问题解决办法写出来,一是方便自己以后查阅,二是为网上其它和我一样的小白遇到同样问题时提供一个解决的法子,省走弯路!高手可以忽略!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  微信 公众号 ThinkPHP5