• 技术文章 >后端开发 >PHP问题

    php token验证失败怎么办?

    coldplay.xixicoldplay.xixi2020-07-10 11:54:25原创889

    php token验证失败的解决办法:1、保障添加的服务器是联通,并且url是能够访问;2、token不能重复;3、服务器上的token要改时,要和配置表单上的一致。

    php token验证失败的解决办法:

    这里附上配置表单,token验证失败的信息。

    ac63fc50bc1600cd2b06033be503f82.png

    后来看了下文档,如下

    3d3652f4abdb17ad033c977edc06098.png

    要返回参数给微信,返回成功则成为开发者;

    所以准备的一下代码

    respond.php:
    <?php
    /**
      * wechat php test
      */
     
    //define your token
    define("TOKEN", "hwqhwq");
    $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;
            }
        }
    }
     
    ?>

    只要两个条件就可以验证成功

    一、你的服务器一定是通的,保证你url是能访问的。

    二、token最好是不要和别人重复的;

    三、服务器上的token要改,要有配置表单上的一样,他们对应就可以了

    相关学习推荐:PHP编程从入门到精通

    以上就是php token验证失败怎么办?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php token
    上一篇:php中while循环语句如何使用 下一篇:php如何把图片转换成二进制输出
    大前端线上培训班

    相关文章推荐

    • PHP Token(令牌)设计• php开发公众号 token验证失败 其中一个原因• 微信开发Token验证失败解决方法• php token使用与验证示例【测试可用】[原创]

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网