微信二次分享報(bào)錯(cuò)invalid signature問題及解決方法
基于微信公眾號(hào)開發(fā)的h5頁面(使用jssdk接口),由用戶A分享給用戶B,用戶B再次分享這個(gè)頁面時(shí),不能成功分享。問題出在用戶B收到的分享鏈接與用戶A打開的鏈接不同
A用戶的鏈接為
B用戶收到的連接
http://test.com/test.html&from=singlemessage
from=singlemessage是微信客戶端為了區(qū)分分享來源再鏈接后自動(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ù)說不用轉(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)獲取(上面js代碼中) 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); }
總結(jié)
以上所述是小編給大家介紹的微信二次分享報(bào)錯(cuò)invalid signature問題及解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
極酷的javascirpt,讓你隨意編輯任何網(wǎng)頁
極酷的javascirpt,讓你隨意編輯任何網(wǎng)頁...2007-02-02分享5個(gè)小技巧讓你寫出更好的 JavaScript 條件語句
在使用 JavaScript 時(shí),我們常常要寫不少的條件語句。這里有五個(gè)小技巧,可以讓你寫出更干凈、漂亮的條件語句。需要的朋友跟隨小編一起學(xué)習(xí)吧2018-10-10解決bootstrap中使用modal加載kindeditor時(shí)彈出層文本框不能輸入的問題
這篇文章主要介紹了解決bootstrap中使用modal加載kindeditor時(shí)彈出層文本框不能輸入的問題,需要的朋友可以參考下2017-06-06JavaScript學(xué)習(xí)筆記整理之引用類型
引用類型是JavaScript中很重要的內(nèi)容,通過本文給大家介紹JavaScript學(xué)習(xí)筆記整理之引用類型,對(duì)js引用類型相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2016-01-01JavaScript編程設(shè)計(jì)模式之構(gòu)造器模式實(shí)例分析
這篇文章主要介紹了JavaScript編程設(shè)計(jì)模式之構(gòu)造器模式,簡(jiǎn)單講述了構(gòu)造器模式的概念、原理,并結(jié)合實(shí)例形式分析了構(gòu)造器模式的定義與使用方法,需要的朋友可以參考下2017-10-10點(diǎn)擊隱藏頁面左欄或右欄實(shí)現(xiàn)js代碼
通過點(diǎn)擊來隱藏頁面左欄或右欄,此效果在實(shí)際應(yīng)用中很常見,接下來為大家詳細(xì)介紹下實(shí)現(xiàn)代碼,感興趣的朋友可以參考下哈,希望可以幫助到你2013-04-04chatGPT前端流式輸出js實(shí)現(xiàn)三種方法—fetch、SSE、websocket
項(xiàng)目需要接入chatgpt提供的api,后端返回流式的字符,前端接收并實(shí)時(shí)顯示,在JavaScript中,使用Stream流通常指的是處理數(shù)據(jù)流的一種方式,它們?cè)试S數(shù)據(jù)被處理成塊,而不是一次性處理整個(gè)數(shù)據(jù)集,這對(duì)于處理大量數(shù)據(jù)或者來自網(wǎng)絡(luò)請(qǐng)求的數(shù)據(jù)非常有用,2024-07-07TextArea設(shè)置MaxLength屬性最大輸入值的js代碼
TextArea中限制最大輸入長(zhǎng)度,實(shí)現(xiàn)的方法種種,我們不在一一介紹,今天本文推薦一種簡(jiǎn)單實(shí)用的方法,需要的朋友可以參考下2012-12-12