数日間断続的に作業し、最終的に問題を見つけるまでに 3 時間を費やしました。
「トークン検証が失敗した」理由は、他のネット民がほぼ書き尽くしているが、私がインターネット上で遭遇したものを見ていないので、ここに記録しておきます。
失敗の理由はエンコーディングの問題です
プロジェクトで開発していたので、ビジネスロジックから技術ロジック、ドメイン名、登録、ネットワーク、コーディングの順に確認していきました。
後で、プロジェクトの入り口にそのようなコードがあることがわかりました。このコードの前では echo $_GET['echostr'] が渡せますが、このコードの後には echo $ が渡されます。 _GET[ 'echostr']、失敗します。
data.config.phpファイルの元のエンコード形式は(notepad++で開く)です
フォーマットをに調整すると問題は解決しました。
実際、utf-8 には基本的に BOM と非 BOM の違いはありません。送信中に誤解が生じることは絶対にありませんが、2 つの形式があることはどうしようもありません。 BOMとは何かについては別の記事で詳しく説明します。
ここでは、さまざまなエンコーディングの 16 進数の比較を示します。