Heim  >  Artikel  >  Backend-Entwicklung  >  Was tun, wenn die Überprüfung des offiziellen PHP-Konto-Tokens fehlschlägt?

Was tun, wenn die Überprüfung des offiziellen PHP-Konto-Tokens fehlschlägt?

PHPz
PHPzOriginal
2023-04-19 10:04:305011Durchsuche

Lösung für den Fehler bei der Token-Überprüfung von PHP-Konten

Bei der Entwicklung öffentlicher WeChat-Konten treten häufig Fehler bei der Token-Überprüfung auf. Diese Situation wird im Allgemeinen dadurch verursacht, dass die Token-Konfiguration falsch ist oder der WeChat-Server nicht auf den Server zugreifen kann. In diesem Artikel werden einige häufige Fehler bei der Token-Überprüfung und deren Lösungen vorgestellt.

  1. Token-Konfigurationsfehler

Beim Einrichten des Tokens müssen wir das Token in unseren Code schreiben und es auf der öffentlichen WeChat-Plattform konfigurieren. Wenn das von uns eingegebene Token nicht mit dem Token im Code übereinstimmt, schlägt die Token-Überprüfung fehl.

Lösung für den Token-Konfigurationsfehler:

Zuerst müssen wir bestätigen, ob der Token, den wir auf der öffentlichen Plattform eingegeben haben, mit dem Token im Code übereinstimmt. Wenn sie unterschiedlich sind, müssen Sie sie in dasselbe Token ändern.

Zweitens müssen wir prüfen, ob der Token im Code richtig gesetzt ist. Sie können dies überprüfen, indem Sie den Token im Code ausdrucken, wie unten gezeigt:

define("TOKEN", "XXXXXXXXXXXXXX");

echo TOKEN;

Das gedruckte Ergebnis sollte mit dem auf der öffentlichen Plattform festgelegten Token übereinstimmen. Wenn es anders ist, müssen Sie das Token im Code ändern.

  1. Serverkonfigurationsfehler

Während der Token-Überprüfung initiiert der WeChat-Server eine HTTP-GET-Anfrage an unseren Server. Die Anfrage enthält die drei Parameter Token, Zeitstempel und Nonce, die wir auf der öffentlichen WeChat-Plattform eingegeben haben. Unser Server muss eine Verschlüsselungsverarbeitung basierend auf diesen drei Parametern durchführen und diese an den WeChat-Server zurücksenden.

Wenn der WeChat-Server nicht auf unseren Server zugreifen kann oder die Serverantwort falsch ist, schlägt die Token-Überprüfung fehl.

Lösung für Serverkonfigurationsfehler:

Zunächst müssen wir bestätigen, ob auf unserem Server Port 80 geöffnet ist und die Firewall den Zugriff auf den WeChat-Server nicht blockiert.

Zweitens müssen wir prüfen, ob der serverseitige Code korrekt eingerichtet ist. Dies kann überprüft werden, indem die vom Server zurückgegebenen Daten im Code ausgedruckt werden, wie unten gezeigt:

$echostr = $_GET["echostr"];

echo $echostr;

Wenn der Server die Daten nicht korrekt zurückgibt, müssen Sie prüfen, ob Fehler oder Logikprobleme im Code vorliegen.

  1. Token-Überprüfungsfehler im abgesicherten Modus

Wenn in den Einstellungen unseres offiziellen Kontos der abgesicherte Modus aktiviert ist, müssen wir eine spezielle Verarbeitung des Tokens durchführen. Im abgesicherten Modus initiiert der WeChat-Server eine HTTP-POST-Anfrage an unseren Server. Die Anfrage enthält die vier Parameter Token, Zeitstempel, Nonce und msg_signatur, die wir auf der öffentlichen WeChat-Plattform eingegeben haben.

Lösung für den Token-Überprüfungsfehler im abgesicherten Modus:

Zuerst müssen wir bestätigen, dass unser Server HTTP-POST-Anfragen normal verarbeiten kann. Zweitens müssen wir eine spezielle Verarbeitung für das Token durchführen. Das Codebeispiel lautet wie folgt:

$token = "XXXXXXXXXXXXXX"; // Token和公众平台上设置一致
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$msg_signature = $_GET["msg_signature"];
$encrypt_type = (isset($_GET['encrypt_type']) && ($_GET['encrypt_type'] == "aes")) ? "aes" : "raw"; // 兼容明文模式与安全模式

if ($msg_signature) {
    $signature = $_GET["signature"];

    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode($tmpArr);
    $tmpStr = $encrypt_type == 'aes' ? $tmpStr . $_GET["encrypted"] : $tmpStr;
    $signatureLocal = sha1($tmpStr);

    if ($signature == $signatureLocal) {
        if ($encrypt_type == 'aes') {
            // 对密文进行解密
        }

        $echostr = $_GET["echostr"];

        echo $echostr;
    }
}
  1. Token-Timeout

Token hat eine Ablaufzeit, wenn unser offizielles Konto die Ablaufzeit des Tokens überschreitet , wodurch die Authentifizierung fehlschlägt.

Lösung für Token-Timeout:

Wir können die Token-Ablaufzeit im Code festlegen, beispielsweise auf 7200 Sekunden (2 Stunden). Das Codebeispiel lautet wie folgt:

define("TOKEN", "XXXXXXXXXXXXXX");
define("EXPIRE_TIME", 7200);

$timestamp = $_GET['timestamp'];
$nonce = $_GET['nonce'];
$signature = $_GET['signature'];

if (time() - $timestamp > EXPIRE_TIME) {
    die('Token expired');
}

$tmpArr = array(TOKEN, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);

if ($tmpStr == $signature) {
    $echostr = $_GET['echostr'];
    echo $echostr;
}

Das Obige ist meine Lösung für das Ich hoffe, dass die Zusammenfassung des offiziellen PHP-Konto-Tokens für alle hilfreich ist.

Das obige ist der detaillierte Inhalt vonWas tun, wenn die Überprüfung des offiziellen PHP-Konto-Tokens fehlschlägt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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