Heim > Backend-Entwicklung > PHP-Tutorial > Lösung für den Fehler bei der Überprüfung des WeChat-Entwicklungstokens

Lösung für den Fehler bei der Überprüfung des WeChat-Entwicklungstokens

韦小宝
Freigeben: 2023-03-21 11:58:01
Original
5809 Leute haben es durchsucht

Dieser Artikel beschreibt die Lösung für den Fehler bei der Token-Überprüfung während der WeChat-Entwicklung. Wenn Sie an der WeChat-Entwicklung interessiert sind oder auf einen Fehler bei der Token-Überprüfung gestoßen sind und diesen nicht beheben können, können Sie diesen Artikel lesen! Kommen wir ohne weitere Umschweife zur Sache!

WeChatMiniprogrammkonfigurationToken-Überprüfungsfehler treten normalerweise auf, wenn Nachrichten gesendet werden Dieser Fehler liegt daran, dass auf Ihrer Schnittstellenseite keine korrekten Informationen vorhanden sind Internetnutzer gaben auch einige Lösungen für die WeChat-Schnittstelle, aber einige können erfolgreich konfiguriert werden, andere nicht. Im Folgenden sind zwei Arten von PHP--Schnittstellenüberprüfungs--Codes aufgeführt, die von Internetnutzern bereitgestellt werden und einfacher erfolgreich zu konfigurieren sind.

Codebeispiel eins (meine Verifizierung kann erfolgreich sein):

<?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;  
}
Nach dem Login kopieren

Codebeispiel zwei:

<?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;  
        }  
    }  
}  
  
?>
Nach dem Login kopieren

Wählen Sie einen der beiden oben genannten Beispielcodes zum direkten Hochladen Geben Sie auf Ihrem Server das entsprechende benutzerdefinierte Token (Token) in die URL in der Nachrichtenkonfiguration ein (schreiben Sie die Serveradresse der PHP-Datei in die Serveradresse). Der Nachrichtenverschlüsselungsschlüssel kann zufällig generiert werden Methode. Kompatibilitätsmodus, das Datenformat hängt von Ihren persönlichen Vorlieben ab (Ich habe JSON eingegeben). Dann klicken Sie einfach auf „Senden“. Wenn das folgende Bild angezeigt wird, bedeutet dies, dass die Überprüfung bestanden wurde:



Jeder ist darauf gestoßen Fehler bei der Token-Überprüfung. Schauen Sie sich das an! Helfen Sie dabei, Token-Probleme schneller zu lösen!

Verwandte Empfehlungen:

Detaillierte Erläuterung des Tokens der App-Schnittstelle

So legen Sie die WeChat-Applet-URL und das Token fest

Das obige ist der detaillierte Inhalt vonLösung für den Fehler bei der Überprüfung des WeChat-Entwicklungstokens. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage