>백엔드 개발 >PHP 튜토리얼 >WeChat 개발 토큰 확인 실패에 대한 솔루션

WeChat 개발 토큰 확인 실패에 대한 솔루션

韦小宝
韦小宝원래의
2018-03-14 13:21:095811검색

이 글에서는 WeChat 개발 중 토큰 확인 실패에 대한 해결 방법을 설명합니다. WeChat 개발에 관심이 있거나 토큰 확인 실패가 발생했지만 해결할 수 없는 경우 이 글을 읽어보세요! 더 이상 고민하지 말고 본론으로 들어가겠습니다!

WeChat미니 프로그램 구성토큰 확인 실패는 일반적으로 메시지를 푸시할 때 발생합니다. 이 오류는 인터페이스 페이지가 아직 WeChat 인터페이스에 올바른 정보를 피드백하지 않았기 때문에 발생합니다. 네티즌들도 몇 가지 해결 방법을 제시했습니다. 하지만 일부는 성공적으로 구성할 수 있고 일부는 그렇지 않습니다. 다음은 네티즌들이 제공하는 두 가지 유형의 php인터페이스 검증 코드로, 비교적 쉽게 구성할 수 있습니다.

코드 예시 1(인증이 성공할 수 있음):

<?php  
//1. 将timestamp , nonce , token 按照字典排序  
$timestamp = $_GET[&#39;timestamp&#39;];  
$nonce = $_GET[&#39;nonce&#39;];  
$token = "你自定义的Token值";  
$signature = $_GET[&#39;signature&#39;];  
$array = array($timestamp,$nonce,$token);  
sort($array);  
  
//2.将排序后的三个参数拼接后用sha1加密  
$tmpstr = implode(&#39;&#39;,$array);  
$tmpstr = sha1($tmpstr);  
  
//3. 将加密后的字符串与 signature 进行对比, 判断该请求是否来自微信  
if($tmpstr == $signature)  
{  
    echo $_GET[&#39;echostr&#39;];  
    exit;  
}

코드 예시 2:

<?php  
/** 
  * wechat php test 
  */  
  
//define your token  
define("TOKEN", "自定义token");  
$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, &#39;SimpleXMLElement&#39;, 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;  
        }  
    }  
}  
  
?>

위의 두 예시 코드 중 하나를 선택하여 서버에 직접 업로드하고, 메시지 구성 PHP에 URL(서버 주소)을 작성하세요. 파일 서버 주소), 해당 사용자 정의 토큰(토큰)을 입력하고 메시지 암호화 키는 무작위로 생성할 수 있으며 암호화 방법에 대한 호환성 모드를 입력했으며 데이터 형식은 개인 취향에 맞게 입력했습니다(JSON을 입력했습니다) ). 그런 다음 제출을 클릭하세요. 다음 그림이 나타나면 인증이 통과되었음을 의미합니다.



토큰 인증 오류가 발생했다면 확인해 보세요! 토큰 문제를 더 빠르게 해결하도록 도와주세요!

관련 권장사항:

앱 인터페이스 토큰에 대한 자세한 설명

WeChat 애플릿 URL 및 토큰 설정 방법

위 내용은 WeChat 개발 토큰 확인 실패에 대한 솔루션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.