官方文档地址 https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#10 demo 中没有.net的。。。。
根绝文档配置好
npm install weixin-js-sdk
实现步骤
1 重新配置
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名
jsApiList: [] // 必填,需要使用的JS接口列表
});
通过后
wx.ready(function() {
var shareData = {
title: data && data.title ? data.title : signData.site_name,
desc: data && data.desc ? data.desc : signData.site_description,
link: data && data.link ? data.link : url,
imgUrl: data && data.imgUrl ? data.imgUrl : signData.site_logo,
success: function(res) {
// 分享后的一些操作,比如分享统计等等
},
cancel: function(res) {}
};
//分享给朋友接口
jweixin.onMenuShareAppMessage(shareData);
//分享到朋友圈接口
jweixin.onMenuShareTimeline(shareData);
});
signature 计算方法
string signature = GetSignature(ticket, nonceStr, timestamp, url);
(1) ticket https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card 拿到每天都有次数限制的(有效显示7200秒)
(2) 步骤一ACCESS_TOKEN 也会有次数限制的 (有效显示7200秒)
/// <summary>
/// 获取JS-SDK权限验证的签名Signature
/// </summary>
/// <param name="ticket"></param>
/// <param name="noncestr"></param>
/// <param name="timestamp"></param>
/// <param name="url"></param>
/// <returns></returns>
public static string GetSignature(string ticket, string noncestr, string timestamp, string url)
{
var parameters = new Hashtable();
parameters.Add("jsapi_ticket", ticket);
parameters.Add("noncestr", noncestr);
parameters.Add("timestamp", timestamp);
parameters.Add("url", url);
return CreateSha1(parameters);
}
/// <summary>
/// sha1加密
/// </summary>
/// <returns></returns>
private static string CreateSha1(Hashtable parameters)
{
var sb = new StringBuilder();
var akeys = new ArrayList(parameters.Keys);
akeys.Sort(ASCIISort.Create());
foreach (var k in akeys)
{
if (parameters[k] != null)
{
var v = (string)parameters[k];
if (sb.Length == 0)
{
sb.Append(k + "=" + v);
}
else
{
sb.Append("&" + k + "=" + v);
}
}
}
return EncryptHelper.GetSha1(sb.ToString());
}
计算出来返回
{ AppId = appId;
Timestamp = timestamp;
NonceStr = nonceStr;
Signature = signature;}
在前端配置就可以了。
对象下面参数。
wx.config({
debug: false,
appId: result.AppId,
timestamp: result.Timestamp,
nonceStr: result.NonceStr,
signature: result.Signature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
]
});
这个校验好了
wx.ready(function() {
var shareData = {
title: data && data.title ? data.title : signData.site_name,
desc: data && data.desc ? data.desc : signData.site_description,
link: data && data.link ? data.link : url,
imgUrl: data && data.imgUrl ? data.imgUrl : signData.site_logo,
success: function(res) {
// 分享后的一些操作,比如分享统计等等
},
cancel: function(res) {}
};
//分享给朋友接口
wx.onMenuShareAppMessage(shareData);
//分享到朋友圈接口
wx.onMenuShareTimeline(shareData);
});
注意事项
1微信的 ticket 和ACCESS_TOKEN 次数限制
2白名单
3域名配置
4localhost不行,需要发了线上测试!