WeChat アプレット (10) メッセージ プッシュ構成 (トークン検証失敗の解決策)

背景: WeChat アプレット開発。何かを行うためにテンプレート メッセージを使用する準備ができていますが、WeChat パブリック プラットフォームの開発で構成する必要があることがわかりました - 開発設定 - メッセージ プッシュ。その後、バックグラウンド スタッフがさまざまな構成を開始しますが、検証が完了したらトークンがエラーを報告し、非常にイライラしました。さまざまな調査の結果、最終的な原因が判明しました。プロセスとコードは次のとおりです。

多くの Web サイトで提供されているサーバー コードは次のとおりです。

//检查签名
     public function checkSignature(Request $request) {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $echostr = $request->echostr;
        $token = config('wechat.token');
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode($tmpArr);
        $tmpStr = sha1($tmpStr);

        if($tmpStr == $signature){

            echo $echostr;
            exit();
            // return true;
        }else{

            return false;
        }
     }

上記のコードは問題ないようで、バックグラウンドでログを確認するために使用できますが、送信されるとトークンの検証が失敗し、バックグラウンドでさまざまなデータがチェックされ、最終的に使用する必要があることがわかります。ob_clean();最终代码如下:

//检查签名
     public function checkSignature(Request $request) {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        $echostr = $request->echostr;
        $token = config('wechat.token');
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr, SORT_STRING);
        $tmpStr = implode($tmpArr);
        $tmpStr = sha1($tmpStr);

        if($tmpStr == $signature){

            ob_clean();
            echo $echostr;
            exit();
            // return true;
        }else{

            return false;
        }
     }

上記は、WeChat パブリック プラットフォームでのテンプレート メッセージ プッシュの最初のステップで遭遇した落とし穴を記録し、その後、テンプレート メッセージ プッシュのステップを記録するためにフォローアップします。お役に立てば幸いです。メッセージを残して「いいね!」を歓迎します. 注意した方が良いでしょう。

おすすめ

転載: blog.csdn.net/wh_xmy/article/details/99956691