ホームページ >WeChat アプレット >WeChatの開発 >エラー構成:無効な署名の解決策

エラー構成:無効な署名の解決策

Y2J
Y2Jオリジナル
2017-05-11 11:47:384437ブラウズ

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]) で確認してください)。部分、そして「?」 ' ですが、'#' ハッシュ以降の部分は含まれません。
4. config の appid が jsapi_ticket の取得に使用された appid と一致していることを確認します。
5. access_token と jsapi_ticket を必ずキャッシュします。 これが重要なポイントです:
署名用に取得する URL が動的に取得されていることを確認してください。動的ページの場合は、サンプル コードの PHP 実装を参照してください。 HTML
静的 ページの場合、フロントエンドの ajax を介して署名のために URL がバックエンドに渡されます。フロントエンドは、「#」ハッシュ部分を除く現在のページのリンクを取得するために js を使用する必要があります。 location.href.split('#')[0] によって取得され、encodeURIComponent が必要です)。ページが共有されると、WeChat クライアントは現在のリンクの末尾に other パラメーターを追加するためです。動的に取得されない場合、共有ページの署名は失敗します。

それが正しいかどうかを確認する方法を教えます:

URL を動的に取得する方法は次のとおりです:

$protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off || $_SERVER[SERVER_PORT] == 443) ? "https://" : "http://";
$url = $protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];

手順:

まず、ページ上でalert(location.href.split('#')[0])を実行します。
それを印刷します。動的に取得された URL がアラート アドレスと同じであるかどうかを確認します。大文字と小文字の区別も含めて、それらはまったく同じである必要があります。
何か違うものを見つけた場合は、必要に応じて変更してください。とにかく、それは同じです。署名検証に合格する必要があります。

【関連推奨事項】

1.

WeChatパブリックアカウントプラットフォームのソースコードのダウンロード

2.

Alizi注文システムのソースコードのダウンロード

以上がエラー構成:無効な署名の解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。