WeChat 開発のヒント: エラー config:invalid signal の解決策
WeChat パブリック プラットフォーム、エラー config:invalid signal の解決策がポップアップし続けます
無効な署名の署名エラーの場合。次の順序で確認することをお勧めします:
1. 署名アルゴリズムが正しいことを確認し、http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign ページを使用できるようにします。検証用のツール。
2. 構成内の nonceStr (js の標準的なキャメルケースの大文字 S) とタイムスタンプが、署名で使用されている対応する noncestr とタイムスタンプと一致していることを確認します。
3. URL が「http(s)://」を含むページの完全な URL であることを確認します (現在のページのアラート (location.href.split('#')[0]) で確認してください)。部分、そして「?」 ' 以降のパラメータ部分を GET しますが、'#' ハッシュ以降の部分は含みません。
4. config の appid が jsapi_ticket の取得に使用された appid と一致していることを確認します。
5. access_token と jsapi_ticket を必ずキャッシュします。
これが重要なポイントです:
署名用に取得する URL が動的に取得されていることを確認してください。動的ページの場合は、サンプル コードの PHP 実装を参照してください。 HTML の静的ページの場合、フロントエンドの ajax を介して署名のために URL がバックエンドに渡されます。フロントエンドは、「#」ハッシュ部分を除く現在のページのリンクを取得する必要があります。 location.href.split('#')[0] によって取得され、encodeURIComponent が必要です)。これは、ページが共有されると、現在のリンクが取得されない場合、WeChat クライアントがリンクの末尾に他のパラメーターを追加するためです。動的に、共有ページの署名は失敗します。
それが正しいかどうかを確認する方法を教えます:
URL を動的に取得する方法は次のとおりです:
$protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off || $_SERVER [SERVER_PORT] = = 443) ? "https://" : "http://";
$url = $protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
手順:
まず、Pagealert(location.href.split('#')[0]);
次に、動的に取得された URL がアラートのアドレスと同じかどうかを出力します。大文字と小文字の区別も含めて、それらはまったく同じである必要があります。
何か違うものを見つけた場合は、必要に応じて変更してください。とにかく、それは同じです。署名検証に合格する必要があります。