ホームページ >ウェブフロントエンド >jsチュートリアル >フロントエンド WeChat 共有 jssdk 構成: 無効な署名署名エラーの解決策
今回はフロントエンドWeChatで共有されたjssdk config:invalid署名の署名エラーの解決策をお届けします注意点は何ですか?実際のケースを見てみましょう。
まず、WeChat については WeChat SDK ドキュメントを読むのが確実です私はフロントエンドなので、フロントエンドに関するコードしか書きませんが、最後にバックエンドについても説明しています。記事に、自分で変更したバックエンドコードを添付します
$.ajax({ type: "post", dataType: 'json', url: '接口链接', data: { url: urld }, success: function(conf) { console.log(conf); configWxAPI(conf); var conf = conf.url; return conf; }, error: function(event, XMLHttpRequest, ajaxOptions, thrownError) { } }); //配置权限 function configWxAPI(conf) { wx.config({ debug: false, //开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端 //打开,参数信息会通过log打出,仅在pc端时才会打印 appId: "唯一的ID", //必填,公众号的唯一标识 timestamp: conf.timestamp, //必填,生成签名的时间戳 nonceStr: conf.nonceStr, //必填,生成签名的随机串 signature: conf.signature, //必填,签名 jsApiList: [ 'onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'previewImage', ] //必填,需要使用的JS接口列表,也就是配置你想使用的调用接口 }); // 微信分享 wx.ready(function() { //分享的图片 var imgUrl = "" //分享朋友 wx.onMenuShareAppMessage({ title: "标题", desc: "内容简介", link: "分享链接", imgUrl: imgUrl, success: function() { //分享成功之后执行的回调函数 }, cancel: function() { //取消分享之后执行的回调函数 } }); //分享朋友圈 wx.onMenuShareTimeline({ title: "标题", desc: "内容简介", link: "分享链接", imgUrl: imgUrl, success: function() { //分享成功之后执行的回调函数 }, cancel: function() { //取消分享之后执行的回调函数 } }); }); wx.error(function(conf) { console.log(conf); // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 }); };バックエンド部分のコード
public function getSignPackage() { if(IS_POST){ if(!I('post.url')) $this->ajaxReturn(array('status'=>0,'msg'=>'请输入当前的URL')); $jsapiTicket = $this->getJsApiTicket(); //这句代码微信SDK上面没有介绍,但是用来签证的url里面就&后面会自动带有&,所以这里用了php的字符串替换 $url = str_replace("&","&",I('post.url')); $timestamp = time(); $nonceStr = $this->createNonceStr(); // 这里参数的顺序要按照 key 值 ASCII 码升序排序ここの時間とランダムな文字列がフロントエンドに渡され、URLリンクもフロントエンドから渡されますバックエンドに渡される URL は、現在のリンクとまったく同じである必要があることに注意してください。リンクをバックエンドに渡すことを忘れないでください。URL は現在のリンクとまったく同じである必要があります。
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr×tamp=$timestamp&url=$url"; $signature = sha1($string); $signPackage = array( "jsapiTicket" =>$jsapiTicket, "appId" => $this->appId, "nonceStr" => $nonceStr, "timestamp" => $timestamp, "url" => $url, "signature" => $signature, "rawString" => $string ); $this->ajaxReturn($signPackage);この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、その他の情報に注意してください。関連記事はphp中国語サイトにあります! 関連書籍:
フロントエンド css3 の入門
axios Promise に基づいて HTTP リクエスト クライアントを作成する方法
以上がフロントエンド WeChat 共有 jssdk 構成: 無効な署名署名エラーの解決策の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。