微信二次分享報(bào)錯(cuò)invalid signature問(wèn)題及解決方法
基于微信公眾號(hào)開(kāi)發(fā)的h5頁(yè)面(使用jssdk接口),由用戶A分享給用戶B,用戶B再次分享這個(gè)頁(yè)面時(shí),不能成功分享。問(wèn)題出在用戶B收到的分享鏈接與用戶A打開(kāi)的鏈接不同
A用戶的鏈接為
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);
}
總結(jié)
以上所述是小編給大家介紹的微信二次分享報(bào)錯(cuò)invalid signature問(wèn)題及解決方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
js實(shí)現(xiàn)StringBuffer的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇js實(shí)現(xiàn)StringBuffer的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-09-09
js實(shí)現(xiàn)首屏延遲加載實(shí)現(xiàn)方法 js實(shí)現(xiàn)多屏單張圖片延遲加載效果
這篇文章主要介紹了js實(shí)現(xiàn)首屏延遲加載實(shí)現(xiàn)方法,以及js實(shí)現(xiàn)多屏單張圖片延遲加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
JavaScript使ifram跨域相互訪問(wèn)及與PHP通信的實(shí)例
這篇文章主要介紹了JavaScript使ifram跨域相互訪問(wèn)及與PHP通信的實(shí)例,同時(shí)對(duì)同域間的訪問(wèn)也作了詳細(xì)的演示,需要的朋友可以參考下2016-03-03
js實(shí)現(xiàn)旋轉(zhuǎn)木馬輪播圖效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)旋轉(zhuǎn)木馬輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-01-01
JS庫(kù)particles.js創(chuàng)建超炫背景粒子插件(附源碼下載)
particles.js用于創(chuàng)建粒子的輕量級(jí) JavaScript 庫(kù)。使用方法非常簡(jiǎn)單,代碼也很容易實(shí)現(xiàn),下面通過(guò)本文給大家分享JS庫(kù)particles.js創(chuàng)建超炫背景粒子插件附源碼下載,需要的朋友參考下吧2017-09-09
JavaScript使用ul中l(wèi)i標(biāo)簽實(shí)現(xiàn)刪除效果
這篇文章主要為大家詳細(xì)介紹了JavaScript使用ul中l(wèi)i標(biāo)簽實(shí)現(xiàn)刪除效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
JavaScript實(shí)現(xiàn)動(dòng)態(tài)生成表格
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)生成表格,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
JavaScript實(shí)現(xiàn)的級(jí)聯(lián)算法示例【省市二級(jí)聯(lián)動(dòng)功能】
這篇文章主要介紹了JavaScript實(shí)現(xiàn)的級(jí)聯(lián)算法,結(jié)合省市二級(jí)聯(lián)動(dòng)下拉菜單功能實(shí)例分析了javascript事件響應(yīng)與元素動(dòng)態(tài)操作實(shí)現(xiàn)級(jí)聯(lián)算法的相關(guān)技巧,需要的朋友可以參考下2018-12-12

