H5分享踩过的坑
2020-03-24 18:57 .net小跟班(杜) 阅读(288) 评论(0) 编辑 收藏 举报我们在做H5页面的分享功能时,需要通过接口获取
appId: ‘’, // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: ‘’, // 必填,生成签名的随机串
signature: ‘’,// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
获取调用微信JS接口的临时票据 在测试的时候需要在微信平台添加自己的ip白名单
#region 获取调用微信JS接口的临时票据 /// <summary> /// 获取调用微信JS接口的临时票据 /// </summary> /// <param name="accessToken"></param> /// <returns></returns> /// <summary> /// 获取JsApiTicket /// </summary> /// <param name="accessToken"></param> /// <returns></returns> public static string GetJsApiTicket(string accessTokens) { if (string.IsNullOrWhiteSpace(accessTokens)) { return null; } string url = $"https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token={accessTokens}"; string getJsApiTicketUrl = HttpGetstr(url); var response = Newtonsoft.Json.JsonConvert.DeserializeObject<AccessTicketResponse>(getJsApiTicketUrl); return response.ticket; } #endregion
获取签名
/// <summary> /// 获取签名 /// </summary> /// <param name="nonceStr">随机字符串</param> /// <param name="jsapi_ticket">jsapi_ticket,可通过GetJsApiTicket()方法获取</param> /// <param name="timeStamp">时间戳,当前时间减去1970-1-1,转换为秒</param> /// <param name="url">申请验证的地址全称(例如:http://abc.companycn.net/login.aspx)</param> /// <returns></returns> public static string GetSignature(string nonceStr, string jsapi_ticket, string timeStamp, string url) { string oriString = string.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", jsapi_ticket, nonceStr, timeStamp, url); return WeChatSha1(oriString); }
在前端方面 自己封装了一个js插件快速实现分享功能
在每次分享的时候 微信会拼接类似于from=XXX的url字符串,但我们在用这个新的url获取签名的时候不会成功,在这儿,需要做一下字符串的过滤
function getQueryString(name) {//根据字段看网址是否拼接&字符串
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null)
return unescape(r[2]);
return null;
}
var from = getQueryString('from');
var appinstall = getQueryString('appinstall');
var sec = getQueryString('sec');
var timekey = getQueryString('timekey');
if (from || appinstall || sec || timekey) {//假如拼接上了
window.location.href = "http://dulux.companycn.net/duluxFour/";
}
如果需要js插件 联系邮箱dujian@inexten.com