精华内容
下载资源
问答
  • token验证失败

    2016-07-20 15:52:00
    token验证失败 公司申请的公众号,刚开始用微信提供的demo配置成功了后来要部署到框架里面,可进行配置的时候提示token验证失败。于是我觉得问题还是出在我们代码这边但调试的时候发现代码已经可以...

    公司申请的公众号,刚开始用微信提供的demo配置成功了
    后来要部署到框架里面,可进行配置的时候提示token验证失败。
    于是我觉得问题还是出在我们代码这边
    但调试的时候发现代码已经可以原样返回echoStr参数的值(Response.Write),消息加解密使用明文模式,但就是提示token验证失败

    解决方案:

    【保证代码以及配置没有错误的情况下】在echo  echoStr前边加上 ob_clean(); 清除掉输出缓存区就OK了

    posted on 2016-07-20 15:52 Mr.毛小毛 阅读(...) 评论(...) 编辑 收藏

    转载于:https://www.cnblogs.com/maowenqiang/p/5688643.html

    展开全文
  • Token验证失败

    2014-10-25 10:49:00
    Token验证失败微信微信公众平台...Token验证失败的解决方法 一、问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 1. token校验失败 这样回头检查一下各项配置是否...

    Token验证失败 微信 微信公众平台开发 Token校验失败 URL Token
    原文 http://www.cnblogs.com/txw1958/p/token-verify.html 

     

    Token验证失败的解决方法

     

    一、问题由来
    在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 

    1. token校验失败

    这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的方法检查

    2. 请求URL超时

    你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了。如果经常这样,就需要考虑更换服务器

    3. 提交成功

     恭喜你,配置成功了。

    我们来讲解一下第一种的原因及解决方法。

     

     

    二、问题分析

    首先要了解的是什么是URL和Token,在这里,URL就是放置了接口程序的网址,这个网址一般得是你自己的服务器或空间地址。你自己在这个空间上某个目录已经有接口程序了,你知道这个接口程序在互联网上的访问地址是什么。而Token就是一个令牌,该令牌是个数字或字母形式的字符串,用于微信服务器与你的服务器进行通讯的时候的身份验证。防止非法数据来搞乱。

     

    然后要了解的是开发模式为什么要使用Url和Token,使用url是为了让微信服务器和你的服务器进行通讯对话,从而达到开发模式下自动回复的目的。而实现这个通讯,必须有相应的程序为你完成这个功能,而这个程序必须已经开发完成并且放置于url路径下面,当你填写完url和token的时候,微信服务器就会和你的服务器下的程序进行一次认证过程,认证通过表明这个服务器是你的并且程序没有问题。不然你填个不存在的url或者url下面个没有相应的接口功能,那是通不过的。

     

    你可以先用下面的测试通过

    URL:   http://discuz.comli.com/test.php
    Token:  weixin
    消息加解密方式: 明文模式

     

    三、问题解决 

    1.  技术分析法

    这次我们在代码里面加入跟踪http记录的方法来查看我们自己的服务器收到了请求没有回应,还是微信根本没有发请求过来。
    通过调用系统环境变量$_SERVER,可以查看到HTTP请求的信息,其中两项重要的是

    把其加入代上面的代码中,并且将其写入到本地文件中来,全部代码

    <?php
    /*
        方倍工作室 http://www.cnblogs.com/txw1958/
        CopyRight 2013 www.doucube.com  All Rights Reserved
    */
    traceHttp();
    
    define("TOKEN", "weixin");
    $wechatObj = new wechatCallbackapiTest();
    if (isset($_GET['echostr'])) {
        $wechatObj->valid();
    }else{
        $wechatObj->responseMsg();
    }
    
    class wechatCallbackapiTest
    {
        public function valid()
        {
            $echoStr = $_GET["echostr"];
            if($this->checkSignature()){
                echo $echoStr;
                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;
            }
        }
    
        public function responseMsg()
        {
            $postStr = $GLOBALS["HTTP_RAW_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($keyword == "?" || $keyword == "?")
                {
                    $msgType = "text";
                    $contentStr = date("Y-m-d H:i:s",time());
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                }
            }else{
                echo "";
                exit;
            }
        }
    }
    
    function traceHttp()
    {
        logger("\n\nREMOTE_ADDR:".$_SERVER["REMOTE_ADDR"].(strstr($_SERVER["REMOTE_ADDR"],'101.226')? " FROM WeiXin": "Unknown IP"));
        logger("QUERY_STRING:".$_SERVER["QUERY_STRING"]);
    }
    function logger($log_content)
    {
        if(isset($_SERVER['HTTP_APPNAME'])){   //SAE
            sae_set_display_errors(false);
            sae_debug($log_content);
            sae_set_display_errors(true);
        }else{ //LOCAL
            $max_size = 500000;
            $log_filename = "log.xml";
            if(file_exists($log_filename) and (abs(filesize($log_filename)) > $max_size)){unlink($log_filename);}
            file_put_contents($log_filename, date('Y-m-d H:i:s').$log_content."\r\n", FILE_APPEND);
        }
    }
    ?>

     

    这样,当我们提交之后,就会生成一个log.html文件在当前目录
    用浏览器直接打开填写的url,也会写一次文件。

    直接用浏览器打开url+log.html路径,我的记录如下:

    2013-01-30 10:15:18 
    2013-01-30 10:15:18 REMOTE_ADDR:212.179.24.103 Unknown IP
    2013-01-30 10:15:18 QUERY_STRING:

    在微信中点击提交一次,再一次生成记录,如下:

    2013-01-30 10:15:49 
    2013-01-30 10:15:49 REMOTE_ADDR:101.226.89.83 From WeiXin
    2013-01-30 10:15:49 QUERY_STRING:signature=eded789463180edf6c13691398d0cb4c85fb0e23&echostr=5838479218127813673×tamp=1359100969&nonce=1359376876

    从上可以看到,这次IP来自101.226.89.83,是微信的IP,我把这个IP加入到代码中自行判断

    现在可以根据下面的来检测自己的问题在哪一个地方

    如果没有生成日志:

      那是微信服务器都没有联系到你,需要检查服务器是否可以通过公网访问,URL路径是否存在并且正确。

    如果生成了日志:

      如果你生成了日志,有REMOTE_ADDR和QUERY_STRING,查看IP是不是来自上海(目前微信服务器部署在上海电信机房,几次故障都说是上海挖路引起的),查看QUERY_STRING格式是否和官方指南中描述的类似,如果这些没有问题,那先检查Token填写的是否和程序中的一致,再检查程序是否有问题。

     

    如果上面的方法你没有看懂,或者无法解决该问题,建议你从微信公众平台的入门教程开始,学习一下微信公众平台开发的基础

    点击进入 微信公众平台开发入门教程  

    2.  付费解决法

    如果使用上面方法还是没有解决你的痛苦,方倍工作室承接这一技术问题的解决。我们的联系QQ:1354386063

     

     

     

    转载于:https://www.cnblogs.com/txw1958/p/token-verify.html

    展开全文
  • TOKEN验证失败

    2017-02-26 20:15:12
    第一个坑:TOKEN验证失败 问题 用wx_sample.php这个例子时是成功的,而稍微修改wx_sample.php文件,如加入记录log等方法后,就一直提示token验证失败。 一开始以为是字符集问题,但却不是。百度搜了,提到了...

    第一个坑:TOKEN验证失败 问题

    用wx_sample.php这个例子时是成功的,而稍微修改wx_sample.php文件,如加入记录log等方法后,就一直提示token验证失败。

    一开始以为是字符集问题,但却不是。百度搜了,提到了输出有可能有BOM头,也不是。基本上搜到的都是常见问题。

    后来终于找到了问题的所在:

    if($this->checkSignature()){

    ob_clean();//删除内部缓冲区的内容,不关闭缓冲区(不输出)。

    echo $echoStr;

    exit;

    }

    这样就好了

     

    展开全文
  • 后来要给客户部署,对方提供了开发者的参数,可进行配置的时候提示token验证失败。 回来用我们自己的账号登陆,修改服务器配置,直接点确定也提示token验证失败…… 于是我觉得问题还是出在我们代码这边 但调试的...
  • 主要介绍了微信公众号token验证失败解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • Token验证失败的解决方法

    万次阅读 2019-04-10 10:37:21
    Token验证失败的解决方法 一、问题由来 在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况 token校验失败 这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的...

    原文 http://www.cnblogs.com/txw1958/p/token-verify.html

    Token验证失败的解决方法

    一、问题由来

    在使用URL和Token启用微信公众平台开发模式消息接口的时候,我们会碰到下面三种情况

    1. token校验失败

    在这里插入图片描述
    这样回头检查一下各项配置是否正确。如果确定配置没有问题,请按下面的方法检查

    1. 请求URL超时

    在这里插入图片描述
    你的服务器在国外,或者服务器网速不给力,一般多试几次就可以了。如果经常这样,就需要考虑更换服务器

    1. 提交成功
      在这里插入图片描述

    恭喜你,配置成功了。

    我们来讲解一下第一种的原因及解决方法。

    二、问题分析

    首先要了解的是什么是URL和Token,在这里,URL就是放置了接口程序的网址,这个网址一般得是你自己的服务器或空间地址。你自己在这个空间上某个目录已经有接口程序了,你知道这个接口程序在互联网上的访问地址是什么。而Token就是一个令牌,该令牌是个数字或字母形式的字符串,用于微信服务器与你的服务器进行通讯的时候的身份验证。防止非法数据来搞乱。

    然后要了解的是开发模式为什么要使用Url和Token,使用url是为了让微信服务器和你的服务器进行通讯对话,从而达到开发模式下自动回复的目的。而实现这个通讯,必须有相应的程序为你完成这个功能,而这个程序必须已经开发完成并且放置于url路径下面,当你填写完url和token的时候,微信服务器就会和你的服务器下的程序进行一次认证过程,认证通过表明这个服务器是你的并且程序没有问题。不然你填个不存在的url或者url下面个没有相应的接口功能,那是通不过的。

    你可以先用下面的测试通过

    URL:http://discuz.comli.com/test.php

    Token:weixin

    消息加解密方式: 明文模式

    三、问题解决

    1. 技术分析法

    这次我们在代码里面加入跟踪http记录的方法来查看我们自己的服务器收到了请求没有回应,还是微信根本没有发请求过来。

    通过调用系统环境变量$_SERVER,可以查看到HTTP请求的信息,其中两项重要的是

    把其加入代上面的代码中,并且将其写入到本地文件中来,全部代码

        CopyRight 2013 www.doucube.com  All Rights Reserved*/traceHttp();define("TOKEN", "weixin");$wechatObj=new wechatCallbackapiTest();if(isset($_GET['echostr'])) {
    
        $wechatObj->valid();
    
    }else{
    
        $wechatObj->responseMsg();
    
    }class wechatCallbackapiTest
    
    {
    
        publicfunction valid()
    
        {
    
            $echoStr=$_GET["echostr"];
    
            if($this->checkSignature()){
    
                echo$echoStr;
    
                exit;
    
            }
    
        }
    
        privatefunction 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 ){
    
                returntrue;
    
            }else{
    
                returnfalse;
    
            }
    
        }
    
        publicfunction responseMsg()
    
        {
    
            $postStr=$GLOBALS["HTTP_RAW_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($keyword== "?" ||$keyword== "?")
    
                {
    
                    $msgType= "text";
    
                    $contentStr=date("Y-m-d H:i:s",time());
    
                    $resultStr=sprintf($textTpl,$fromUsername,$toUsername,$time,$msgType,$contentStr);
    
                    echo$resultStr;
    
                }
    
            }else{
    
                echo"";
    
                exit;
    
            }
    
        }
    
    }function traceHttp()
    
    {
    
        logger("\n\nREMOTE_ADDR:".$_SERVER["REMOTE_ADDR"].(strstr($_SERVER["REMOTE_ADDR"],'101.226')? " FROM WeiXin": "Unknown IP"));
    
        logger("QUERY_STRING:".$_SERVER["QUERY_STRING"]);
    
    }functionlogger($log_content)
    
    {
    
        if(isset($_SERVER['HTTP_APPNAME'])){//SAEsae_set_display_errors(false);
    
            sae_debug($log_content);
    
            sae_set_display_errors(true);
    
        }else{//LOCAL$max_size= 500000;
    
            $log_filename= "log.xml";
    
            if(file_exists($log_filename) and (abs(filesize($log_filename)) >$max_size)){unlink($log_filename);}
    
            file_put_contents($log_filename,date('Y-m-d H:i:s').$log_content."\r\n", FILE_APPEND);
    
        }
    
    }?>
    

    这样,当我们提交之后,就会生成一个log.html文件在当前目录

    用浏览器直接打开填写的url,也会写一次文件。

    直接用浏览器打开url+log.html路径,我的记录如下:

    2013-01-30 10:15:18 2013-01-30 10:15:18 REMOTE_ADDR:212.179.24.103 Unknown IP2013-01-30 10:15:18 QUERY_STRING:

    在微信中点击提交一次,再一次生成记录,如下:

    2013-01-30 10:15:49 2013-01-30 10:15:49 REMOTE_ADDR:101.226.89.83FromWeiXin2013-01-30 10:15:49 QUERY_STRING:signature=eded789463180edf6c13691398d0cb4c85fb0e23&echostr=5838479218127813673×tamp=1359100969&nonce=1359376876

    从上可以看到,这次IP来自101.226.89.83,是微信的IP,我把这个IP加入到代码中自行判断

    现在可以根据下面的来检测自己的问题在哪一个地方

    如果没有生成日志:

    那是微信服务器都没有联系到你,需要检查服务器是否可以通过公网访问,URL路径是否存在并且正确。

    如果生成了日志:

    如果你生成了日志,有REMOTE_ADDR和QUERY_STRING,查看IP是不是来自上海(目前微信服务器部署在上海电信机房,几次故障都说是上海挖路引起的),查看QUERY_STRING格式是否和官方指南中描述的类似,如果这些没有问题,那先检查Token填写的是否和程序中的一致,再检查程序是否有问题。

    点击进入 微信公众平台开发入门教程

    展开全文
  • 微信Token验证失败

    2016-06-01 10:07:13
    Token验证失败Token验证失败的一个原因是URL填写成了带参数的了如:http://small.taolue.fm/yancan/index.php?do=vail解决办法就是URL不能带参数,否则会验证失败。一个很好用的token验证工具,点击这里。
  • 微信token验证失败的解决方法
  • 主要介绍了php版微信开发Token验证失败或请求URL超时问题的解决方法,简单分析了Token验证失败及请求URL超时的原因及相关解决方法,需要的朋友可以参考下
  • 微信Token验证失败原因及解决方案

    万次阅读 多人点赞 2017-04-05 15:49:25
    微信Token验证失败原因及解决方案
  • 微信token验证失败Java解决办法

    万次阅读 多人点赞 2017-07-20 17:55:59
    说我 token验证失败, 是不是因为我的token填写了jinsanpang(金三胖)了 ? 貌似这个token没有说明填写神马,看说明必须为英文或数字,长度为3-32字符。也就是说token是自定义的,也就是瞎鸡巴写都没事。 我们看下...
  • @微信公众号修改服务器配置token验证失败 微信公众号修改服务器配置token验证失败 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下...
  • 微信公众号开发者模式验证token验证失败 在开通公众号开发者模式时,里面有服务器配置这块 服务器地址(URL): 令牌(Token): 1.服务器地址要填写你自己买的服务器地址,同时要部署一个http服务,可以接收get...
  • 在微信公众平台中配置服务器的时候,改了访问地址总是提示token验证失败,明明是一样的代码。 原来的配置直接填写的php文件 现在是想配置在controller中,路径优雅点,于是把代码复制到controller的一个方法中,...
  • 微信公众平台开发问题——token验证失败

    万次阅读 热门讨论 2015-04-08 11:58:13
    之前学了PHP后做的平台的开发,token验证是成功的,昨晚手贱改了一下聊天机器人的url和token之后,感觉没小黄鸡好玩,就改了回来,一改就是一晚上。而且昨晚微信开发者的那个后台基本登不上去,一直的token错误。 ...
  • 微信一直Token验证失败

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 609
精华内容 243
关键字:

token验证失败