html(h5)页面实现微信js分享

注:并非所有代码原创

服务端实现签名等

因为引用了第三方dll,所以需先添加nuget包,这个包直接在nuget管理器中搜索不到,在pm控制台输入如下内容:也
Install-Package Senparc.Weixin.MP -Version 14.3.5
但安装包时也会报错,找不到包,
可以从 https://www.nuget.org/packages/Senparc.Weixin.MP/14.3.5 左下方直接下载本地包,放到pm窗口提示的找不到包自动在本地找包的路径中,再执行该命令,即可安装成功

以下是利用该接口获取时间戳,签名的方法

using Senparc.Weixin.MP.Containers;
using Senparc.Weixin.MP.Helpers;
using Utility;namespace Mobile.App_Codes
{/// <summary>/// 微信分享接口封装/// </summary>public class WeiXin{/// <summary>/// 获取微信分享配置信息/// </summary>/// <param name="url">当前请求url</param>/// <returns></returns>public static WxConfig GetConfig(string url){var key = "Mobile_Wxconfig" + url;var wxConfig = Cache.GetCache<WxConfig>(key.Md5());if (wxConfig != null && wxConfig.Signature.Length > 0){return wxConfig;}else{wxConfig = new WxConfig();wxConfig.Timestamp = JSSDKHelper.GetTimestamp();wxConfig.NonceStr = JSSDKHelper.GetNoncestr();wxConfig.AppId = "wxe62testestetewtstest";wxConfig.AppSecret = "8b213499dtestesetrtestesteserewtest";wxConfig.Ticket = JsApiTicketContainer.TryGetJsApiTicket(wxConfig.AppId, wxConfig.AppSecret);wxConfig.Signature = JSSDKHelper.GetSignature(wxConfig.Ticket, wxConfig.NonceStr, wxConfig.Timestamp,url);Cache.SetCache(key.Md5(), wxConfig, 60*60);return wxConfig;}}}
}

当然也可以自己代码实现这个, 具体的实现可以下这个项目的源码看下

下面列出是sha1计算签名的方法

        /// <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();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 SHA1UtilHelper.GetSha1(sb.ToString()).ToLower();}/// <summary>/// 签名算法/// </summary>/// <param name="str"></param>/// <returns></returns>public static string GetSha1(string str){//建立SHA1对象SHA1 sha = new SHA1CryptoServiceProvider();//将mystr转换成byte[] ASCIIEncoding enc = new ASCIIEncoding();byte[] dataToHash = enc.GetBytes(str);//Hash运算byte[] dataHashed = sha.ComputeHash(dataToHash);//将运算结果转换成stringstring hash = BitConverter.ToString(dataHashed).Replace("-", "");return hash;}

签名,appid,AppSecret,这些放在服务端实现,不要放在js里,不安全,

下面主要讲前端如何调用实现分享

1 首先添加js引用

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js" type="text/javascript"></script>

2 在你要分享的页面合适的地方添加如下的js代码

var shareData = {};
shareData.imgUrl = window.ImgPrex + result.PicUrls;
shareData.link = window.location.href;
shareData.content = delHtmlTag($("#Contents").html());
shareData.title = document.title;
Share(shareData);

3 分享实现的代码

function Share(shareData) {var data = {};var wxdata = {};data.method = "GetConfig";data.url = window.location.href.split('#')[0];//这里是ajax向后台请求签名,appid等的方法ajaxProcess("/h5/share.aspx?", data, function callSuccess(oRet) {//var data = oRet;var result = oRet;if (result != null) {wx.config({debug: false,appId: result.AppId,timestamp: result.Timestamp,nonceStr: result.NonceStr,signature: result.Signature,jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone']});}}, function callError(e) {alert(e);});wxdata.imgUrl = shareData.imgUrl;wxdata.link = shareData.link;var content = shareData.content;content = delHtmlTag(content);if (content.length > 100) {wxdata.desc = content.substring(0, 100);} else {wxdata.desc = content;}wxdata.title = shareData.title;var friendcallback = function(res) {//alert("分享成功");};wx.ready(function() {wx.onMenuShareTimeline({title: wxdata.title,desc: wxdata.desc,link: wxdata.link,imgUrl: wxdata.imgUrl,img_width: 200,img_height: 200,trigger: function(res) {},success: function(res) {friendcallback(res);},cancel: function(res) {},fail: function(res) {alert(JSON.stringify(res));}});});wx.ready(function() {wx.onMenuShareAppMessage({title: wxdata.title,desc: wxdata.desc,link: wxdata.link,imgUrl: wxdata.imgUrl,img_width: 200,img_height: 200,trigger: function(res) {},success: function(res) {friendcallback(res);},cancel: function(res) {},fail: function(res) {alert(JSON.stringify(res));}});});wx.ready(function() {wx.onMenuShareQQ({title: wxdata.title,desc: wxdata.desc,link: wxdata.link,imgUrl: wxdata.imgUrl,img_width: 200,img_height: 200,trigger: function(res) {},success: function(res) {friendcallback(res);},cancel: function(res) {},fail: function(res) {alert(JSON.stringify(res));}});});wx.ready(function() {wx.onMenuShareWeibo({title: wxdata.title,desc: wxdata.desc,link: wxdata.link,imgUrl: wxdata.imgUrl,img_width: 200,img_height: 200,trigger: function(res) {},success: function(res) {friendcallback(res);},cancel: function(res) {},fail: function(res) {alert(JSON.stringify(res));}});});wx.ready(function() {wx.onMenuShareQZone({title: wxdata.title,desc: wxdata.desc,link: wxdata.link,imgUrl: wxdata.imgUrl,img_width: 200,img_height: 200,trigger: function(res) {},success: function(res) {friendcallback(res);},cancel: function(res) {},fail: function(res) {alert(JSON.stringify(res));}});});}

分享音频视频

如果想分享音频或视频,设置如下两个属性
type: 'link', // 分享类型,music、video或link,不填默认为link【必填】
dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空

以上就是实现的主要代码了

具体接口的说明文档可参考:  点击 https://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

--- end ---

html(h5)页面实现微信js分享相关推荐

  1. h5页面在微信内部分享

    今天自己写了一个微信分享的功能,可以说遇到了很多坑,但最好还是顺利完成了,分享给大家,让大家少爬一点坑 1.引用js: <script type="text/javascript&qu ...

  2. [html] H5页面在微信中如何禁止分享给好友和朋友圈?

    [html] H5页面在微信中如何禁止分享给好友和朋友圈? 利用JSBridge实现调用微信提供的一些原生功能,可以通过调用隐藏操作菜单来实现禁用分享. 代码如下: document.addEvent ...

  3. H5页面调用微信支付

    1.H5页面使用微信支付,首先需要注册微信公众号,在设置与开发>公众号设置>功能设置中配置业务域名.JS接口安全域名.网页授权域名.支付功能页面需在此域名链接下的页面. 2.加入域名后,就 ...

  4. h5页面在微信中打开,字体显示不正常

    h5页面在微信中打开,页面打开时字体正常显示,加载完成字体变大或者变小(其他浏览器均正常显示). 原因是调整了微信中页面字体大小,如下图所示: 如果不想在微信中打开的H5页面字体变大或者变小而影响整体 ...

  5. 微信公众号H5页面开发--微信JS-SDK引用

    微信公众号H5页面开发–微信JS-SDK引用 微信提供了微信公众号开发者手册,官方地址:https://mp.weixin.qq.com/ 公众号内许多复杂的业务场景,都是通过网页形式来提供服务,这时 ...

  6. 微信小程序webview(H5页面)调用微信小程序支付

    1.业务描述:微信小程序商城入口进入的页面是商城H5页面,在H5页面进行微信支付如何实现: 2.微信小程序(webview访问H5页面)必须使用微信小程序支付: 如何实现以及实现方式以及支付后页面返回 ...

  7. 微信js分享朋友圈(二)

    微信js分享朋友圈(二) 近期又用到微信分享的功能了.虽然不是第一次用了,依然我又有幸踩到了一个坑,所以分享一下吧. 根据微信sdk写的代码一步步很顺利,但是后面就是获取微信返回的分享结果的回调的时候 ...

  8. 在服务器上部署自己的h5页面用于微信内部浏览器打开

    在服务器上部署自己的h5页面用于微信内部浏览器打开  域名注册 和 虚拟主机租用  都是在 西部数据 进行的 以下为 西部数据 的官网 登录和注册这里不过多介绍...... 一.域名注册 点击官网首页 ...

  9. H5页面在微信浏览器中打开,右上角没有出现三个点

    在发现问题的日期2020/09/23,微信好像出现了纯H5页面在微信浏览器中打开右上角没有三个点,经过同文件更换多个服务器和域名测试,发现可能是由于打开的域名的没有备份,现在正在走备案流程,出现问题换 ...

最新文章

  1. 深入理解PHP内核(五)函数的内部结构
  2. FCN 学习: Semantic Segmentation
  3. 公用技术——设计模式19——行为型模式——备忘录模式——待补充
  4. linux实现乘法函数,linux命令行计算器
  5. java学习(66):局部类内方法访问
  6. 爬楼梯(信息学奥赛一本通-T1204)
  7. zemax评价函数编辑器_zemax常用评价函数操作数..doc
  8. Contact Manager Web API 示例[1]CRUD 操作
  9. 存储网络与存储系统架构分析
  10. apache 下载安装linux,linux下安装apache详解
  11. Vijos P1398 奖学金【排序】
  12. MacOS之Chrome弹框:代理要求提供用户名和密码(已解决)
  13. unity汉化补丁_Unity补丁发布计划
  14. 北大哲学系杨立华先生
  15. 猿猿趴架构实战--03 什么是架构
  16. A段架构设计_隽语集(Business Thinking _1201)
  17. Java学习笔记类对象多态继承(下)
  18. 鸭鸭来袭--官方下载
  19. CMD命令下修改和查看IP地址,DNS,网关
  20. linux期末vi简答题,Linux操作系统期末练习题lym

热门文章

  1. HADOOP 伪分布式集群搭建
  2. jQuery拆分字符串 split()并且遍历$.each()
  3. oracle索引一般叫什么意思,什么是oracle索引?
  4. 数据中心22年基础架构演进史
  5. Cin、cout、 cerr和 clog用法和区别
  6. VS生成桌面应用程序
  7. 余三码和余三循环码的简单理解
  8. 安装 AWS Load Balancer Controller 附加组件
  9. 51单片机学习——9--温度传感器DS18B20
  10. 大学生或者程序员上B站学习编程必备的几位优秀UP主