這篇文章主要為大家展示了“如何解決微信二次分享報(bào)錯(cuò)invalid signature的問(wèn)題”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“如何解決微信二次分享報(bào)錯(cuò)invalid signature的問(wèn)題”這篇文章吧。
成都創(chuàng)新互聯(lián)是一家專業(yè)提供江岸企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、HTML5建站、小程序制作等業(yè)務(wù)。10年已為江岸眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站制作公司優(yōu)惠進(jìn)行中。基于微信公眾號(hào)開(kāi)發(fā)的h6頁(yè)面(使用jssdk接口),由用戶A分享給用戶B,用戶B再次分享這個(gè)頁(yè)面時(shí),不能成功分享。問(wèn)題出在用戶B收到的分享鏈接與用戶A打開(kāi)的鏈接不同
A用戶的鏈接為
http://test.com/test.html
B用戶收到的連接
http://test.com/test.html&from=singlemessage
from=singlemessage是微信客戶端為了區(qū)分分享來(lái)源再鏈接后自動(dòng)添加的標(biāo)記,再次分享時(shí),需要在js代碼中對(duì)自動(dòng)獲取的連接進(jìn)行encodeURIComponent處理,后臺(tái)再對(duì)收到的url進(jìn)行urldecode處理。
js與php示例代碼如下:
注意ajax,用的post,用get據(jù)說(shuō)不用轉(zhuǎn)義(get方式本人未做測(cè)試)
js代碼
function share(){ var nowurl = window.location.href; var nowurlo = nowurl.split('&')[0]; $.ajax({ type : "post", url : "***********************", //后端接口 dataType : "json", data : { 'url': encodeURIComponent(nowurl) }, // 注意此處對(duì)nowurl進(jìn)行encode; success : function (data) { wx.config({ debug : false, //調(diào)試模式 appId : data.appId, //公眾號(hào)appid timestamp : data.timestamp, //時(shí)間戳 nonceStr : data.noncestr, //生成簽名的隨機(jī)串 signature : data.signature, //簽名 jsApiList : [ 'updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareAppMessage', 'onMenuShareTimeline', 'chooseWXPay', 'showOptionMenu', "hideMenuItems", "showMenuItems", "onMenuShareTimeline", 'onMenuShareAppMessage', ] // 必填,需要使用的JS接口列表 }); wx.ready(function () { //需在用戶可能點(diǎn)擊分享按鈕前就先調(diào)用 wx.updateAppMessageShareData({ title : '', // 分享標(biāo)題 desc : '', // 分享描述 link : nowurlo, // 自動(dòng)獲?。ㄉ厦鎗s代碼中) imgUrl : '', // 分享圖標(biāo) success : function () { } }); wx.updateTimelineShareData({ title : '', // 分享標(biāo)題 link : nowurlo, 自動(dòng)獲?。ㄉ厦鎗s代碼中) imgUrl : '', // 分享圖標(biāo) success : function () { }, }); }); } }); }
php代碼
public function generateSignature(){ $timestamp = time(); $jsapiTicket = ;//此處獲取jsapi_ticket $noncestr = md5(uniqid(microtime(true),true));//我用的noncestr $url = urldecode(I('post.url')); $signature = sha1('jsapi_ticket=' . $jsapiTicket . '&noncestr=' . $noncestr . '×tamp=' . $timestamp . '&url=' . $url); $shareConfig['appId'] = '';//此處為appId $shareConfig['timestamp'] = $timestamp; $shareConfig['noncestr'] = $noncestr; $shareConfig['signature'] = $signature; $shareConfig['url'] = $url; echo json_encode($shareConfig); }
以上是“如何解決微信二次分享報(bào)錯(cuò)invalid signature的問(wèn)題”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。