トークン後は多くの人が同じようになると思います。確認のために、サブスクリプション アカウントにメッセージを送信しましたが、メッセージが返されません。
以下は、ハードなデバッグの後に得られた解決策です:
まず、トークンの検証:
私が書いたトークンは常に検証に失敗しました。長い間探しましたが、バグは見つかりませんでした。仕方がないので公式のサンプルコードを使用しました。そして、サンプルコードのデバッグを通じて、血を吐くようなバグを発見しました(バグではありません):
トークンの検証には文字エンコード形式が必要なようです! ! ! !
公式サンプルコードはサーバーに直接アップロードされ、トークンは直接渡されます!
公式サンプルコードをUTF-8形式に変更して上書きアップロードしたところ、トークンに失敗しました! 失敗しました!失敗!
その後、作成した内容を ANSI 形式に変更しましたが、トークンは依然として失敗しました。酔った、酔った!その場合は、公式のサンプルコードを使用する必要があります。ここで、トークンは1回限りのハンドシェイク検証であり、一度検証した後は不要になると言わせてください。
さて、本題に戻りますが、話が逸れたようです...orz
トークン検証後、公式サンプルコードを直接使ってサブスクリプションアカウントを簡単にテストした結果…送信されたメッセージは水が注がれたようなもので、何も返されませんでした…orz
。私はさまざまな方法でバグを検索し、さまざまなグループに質問し、さまざまな方法で検索しました...このブロガーの努力の後、ついに問題を発見しました(これは私が自分で開発したものを指しており、すべてが含まれているわけではありません、別のバグがある場合は、ご連絡ください):
1. 最も見落とされやすいバグは、公式サンプル コードが記述された responseMsg() 関数をまったく呼び出していないことです。
2. 前のトークン コード (コード $wechatObj->valid();) の行をコメント アウトします。トークン検証コードには echo $echostr が含まれるため、responseMsg() 関数 の echo $resultStr; (行 56) は紛らわしい XML 形式となり、 WeChatサーバー(xml形式、json形式しか認識できないようです)。 (トークン検証はハンドシェイク検証です。開発者を検証した後は必要なくなります。きれいなコードからは消えてくださいorz...)
3. 最も嫌なバグは、文字エンコーディングの問題です。 orz...xml には UTF-8 エンコーディングが必要なので、サンプル コードを UTF-8 エンコーディングに戻してください。このバグは私を崩壊させます! ! !
以下は私が修正したコードです。正常に実行でき、バグはありません。必要に応じて参照してください。 リーリー
http://www.bkjia.com/PHPjc/1082307.html