微信公众平台开发Token验证失败(有时URL超时)--解决方案

最近在做微信公众平台的服务器端,测试什么的都比较顺利,申请一个沙盒测试号就能满足一切正式环境的需求。

然而昨天在配置到正式环境中的时候出了问题了,一直都是验证token失败,第一次偶尔会出现URL超时,查了一整晚,一开始以为是权限的问题无法修改配置(我是运营者),但后来看了下安全中心,我们未开启配置权限限制。后来又列了很多原因,最后想起我们的正式环境曾经配置过一个微信管家jeewx(一个java写的微信公众平台管理平台,可视化,很方便,然而没什么卵用,微信已经推出了很多方便开发者的功能,而且我们的项目需要获取openid绑定链接,这个管家也没有直接实现的途径),遂百度之,百度了很久终于找到了C站的一个帖子,看到了我想要的答案。

好了不废话了,先大致讲下这个问题的原因:

由于正式环境绑定过java环境的服务器,于是在腾讯服务器的输出缓存区留下了对应本账号的验证缓存,导致我第二次想去验证我sae上用php搭建的服务器时,验证被阻断(log里面有记录,自己调试也能返回echostr(随机字符串,签名生成材料之一),但就是验证不通过)。我是一只小前端,php和java都不熟,不敢妄自装X,所以以上为大致推测,不敢保证是否完全如我所述,但可以肯定的是,原因肯定在之前那个微信管家上面(好坑啊,有这种问题用户手册里也不写),因为我在微信管家上又验证了3个测试号,结果都是本来用自己的服务器验证的正常,在第三方管理平台验证后,自己的服务器就没办法通过验证了。


讲完了原因,重点来了,怎么解决呢?

很简单,php下是ob_clean();  没错,就是这一小搓API,其目的是为了清除输出缓存区,在自己的代码里添加这个之后自己的代码就能正常验证了。这段代码具体放置位置的话在官方demo里是在valid方法的echo $echoStr之前

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

        //valid signature , option
        if($this->checkSignature()){
        	<span style="background-color: rgb(255, 255, 51);">echo $echoStr;</span>
        	exit;
        }
    }
我用的是LaneWechat的框架,也能找到相似的函数isValid,也是在return前加下就好了,不加的话,微信就直接pass你的验证请求,重要的话说三遍,直接pass,直接pass。

java的话我不清楚,但遇到这个问题应该也有对应的解决方案。

关于输出缓冲区,这里有一篇关于c++的blog挺直白的--C++编程对缓冲区的理解

特此留念,防止被坑。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值