先在微信公众号里面配置js接口安全域名

HTML代码部分

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script type="text/javascript">
        //if(!(/MicroMessenger/i.test(navigator.userAgent)))
        //{
        //    document.body.innerHTML="请在微信打开此链接";
        //}
        // 注意:所有的JS接口只能在公众号绑定的域名下调用,公众号开发者需要先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
        // 如果发现在 Android 不能分享自定义内容,请到官网下载最新的包覆盖安装,Android 自定义分享接口需升级至 6.0.2.58 版本及以上。
        // 完整 JS-SDK 文档地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html
        wx.config({
            debug: false,
            appId: 'xxxxx',
          timestamp: '<%=wx.timestamp%>',
            nonceStr: '<%=wx.noncestr%>',
            signature: '<%=wx.signature%>',
            jsApiList: [
                'checkJsApi',
                'onMenuShareTimeline',
                'onMenuShareAppMessage'
            ]
        });
        wx.ready(function () {  
            // 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
            wx.onMenuShareTimeline({
                title: '好帮人平台-',
               link: 'xxxxxx',  
                desc: "分享给您的好友吧",
                imgUrl: 'xxxx',
                trigger: function (res) {
                   // alert("分享到朋友圈按钮点击");        
                },
                success: function (res) {
                    alert("分享成功");
                },
                cancel: function (res) {
                  // alert('已取消');
                },
                fail: function (res) {
                    alert(JSON.stringify(res));
                }
            });
            wx.error(function (res) {
                // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                alert("errorMSG:" + res);
            });
        });
    </script>
<script type="text/javascript"> 
#endregion
        /// <summary>
        /// 微信的js_api票
        /// </summary>
        public WeiXinJsapi_ticketJs wx { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {
            WeiXinOAuth au = new WeiXinOAuth();
            //  WeiXinAccessTokenResult result = null;
            string AppID = "xxxx";
            string AppSecret = "xxxx";
            if (HttpContext.Current.Session["jsapi"] == null)
            {

string actoken = "";
                if (HttpContext.Current.Session["token"] != null)
                {
                    actoken = HttpContext.Current.Session["token"] as string;
            }
                else
                {
                    Access_token ac = au.GetAcess_token(AppID, AppSecret);
                    if (ac != null)
                    {
                        HttpContext.Current.Session["token"] = ac.access_token;
                        actoken = ac.access_token;
                        //  HttpContext.Current.Session.Timeout = 72000;
                    }
                }
            
                WeiXinJsapi_ticket jsapi = au.GetTickect(actoken);
                string ms = JsonSerializeUtils.JsSerializer(jsapi);
            
                WeiXinJsapi_ticketJs jsapis = new WeiXinJsapi_ticketJs();
                jsapis.errcode = jsapi.errcode;
                jsapis.errmsg = jsapi.errmsg;
                jsapis.expires_in = jsapi.expires_in;
                jsapis.ticket = jsapi.ticket;
                long time = au.GetTimeStamp();
                string noncestr = au.GetNoncestr();
                jsapis.noncestr = noncestr;
                string signature = au.GetSignature(jsapis.ticket, noncestr, time, HttpContext.Current.Request.Url.ToString(), "");//必须动态获取

jsapis.timestamp = time.ToString();
                jsapis.signature = signature;
                HttpContext.Current.Session["jsapi"] = jsapis;
                HttpContext.Current.Session.Timeout = 72000;
                string mss = JsonSerializeUtils.JsSerializer(jsapis);
                wx = jsapis;
             
            }
            else
            {              
                wx = HttpContext.Current.Session["jsapi"] as WeiXinJsapi_ticketJs;
                string mss = JsonSerializeUtils.JsSerializer(wx);
                long time = au.GetTimeStamp();
                string noncestr = au.GetNoncestr();
                wx.noncestr = noncestr;
                string signature = au.GetSignature(wx.ticket, noncestr, time, HttpContext.Current.Request.Url.ToString(), "");//必须动态获取
                wx.timestamp = time.ToString();
                wx.signature = signature;               
            }
        }
    }
}

注:获取的Access_Token必须是全局Access_Token不是网页的Access—_Token,全局Access_token缓存72000秒,也就是两个小时,微信端不宜频繁访问。 
signature 签名每次访问都要更新,切勿保存到session里面
MOdel实体类

/// <summary>
    /// 这是获取基础的access_token  每天最多获取2000次
    /// </summary>
    public class Access_token
    {
        public string access_token { get; set; }

public string expires_in { get; set; }
    }

/// <summary>
    /// 微信Js-jdk的票据信息
    /// </summary>
   public class WeiXinJsapi_ticket
    {
       
        public string errcode { get; set; }

public string errmsg { get; set; }

public string ticket { get; set; }

public string expires_in { get; set; }

}

public class WeiXinJsapi_ticketJs : WeiXinJsapi_ticket
    {
        /// <summary>
        /// 随机数
        /// 
        /// </summary>
        public string noncestr { get; set; }
        /// <summary>
        /// 时间戳
        /// </summary>
        public string timestamp { get; set; }
        /// <summary>
        /// 签名
        /// </summary>
        public string signature { get; set; }
    }

访问微信端类在上一篇文章。

微信通过JSSDK分享朋友圈相关推荐

  1. 微信只显示分享朋友圈和好友  屏蔽其他的分享

    wx.hideOptionMenu(); wx.showMenuItems({menuList: ['menuItem:share:appMessage','menuItem:share:timeli ...

  2. 解决方案:h5网页外部浏览器唤起微信分享,唤起微信面板,分享朋友圈方案,兼容大部分浏览器

    h5网页外部浏览器唤起微信分享,唤起微信面板,分享朋友圈方案,兼容大部分浏览器 需求是点击分享按钮,直接唤起微信,发送给好有或者朋友圈.这个需求并不好完成,因为微信并没有对h5网页开放api,但是每个 ...

  3. 最新微信小程序分享朋友圈

    微信小程序分享朋友圈 近日,微信小程序官方文档更新 wx.showShareMenu(Object object),其中显示小程序可以分享到朋友圈啦! 但是,设置分享朋友圈的前提是必须同时设置发生给朋 ...

  4. 微信小程序分享朋友圈官方支持哪些方面(最新版本)

    微信小程序分享朋友圈官方支持哪些方面? 1.微信小程序分享朋友圈支持单页模式,具体单页模式的详细说明可参考官方文档,文档链接为:微信小程序单页模式 2. 微信小程序分享朋友圈如果是自定义页面路径的话, ...

  5. 微信公众号开发 自定义分享 从前台到Java后台 调用微信JS接口分享朋友圈

    20180811写在前面的话 有很多人遇到问题之后问我,结果大多数是因为配置问题,所以请详细阅读前面的配置步骤. 20181016注意事项 收到反馈,之前写的接口即将废弃,源代码中的js接口需要修改, ...

  6. 微信小程序分享朋友圈 详细教程及注意事项

    微信官方文档 分享所需要的条件   小程序页面默认为不开启朋友圈分享 需要开发者进行手动设置 需满足以下条件 才能开启朋友圈分享   1. 页面需设置允许"发送给朋友 官方文档 Page.o ...

  7. 微信小程序分享朋友圈生成海报

    微信小程序实现分享到朋友圈 分享朋友圈现在大家的通用做法就是通过Canvas生成一张图片后进行保存,然后自行转发朋友圈.最近项目有这个需求, 于是就记录一下.(老规矩,我的博客复制粘贴就好使) 如果想 ...

  8. 微信小程序分享朋友圈限制多多

    千呼万唤shi出来,在我渐渐淡忘了微信小程序可以分享朋友圈后,它又终于可以分享朋友圈了,但现在还只是测试版本,现在只针对Android平台开放,后续会对ios开放. 分享朋友圈定义的函数:onShar ...

  9. 【微信小程序】微信小程序分享朋友圈教程

    安卓的朋友们福利来了,微信小程序现支持安卓的朋友们分享小程序到朋友圈了! 下面我们来看下具体操作,如何实现小程序分享朋友圈的! 效果图 点击朋友圈的链接即可进入一个微信原生的H5页面去展示所分享的小程 ...

最新文章

  1. 小程序地图多个 circles 使用demo
  2. 【每日一算法】重排链表
  3. Visual C# 编程操作Excel
  4. java web 的标准目录结构(zz)
  5. 使用windows自带远程桌面远程办公
  6. 运行iDT算法代码及后续特征编码
  7. 【spring boot】 使用 RestTemplate
  8. 美国发布新的安全备忘录,提升关键基础设施的网络安全
  9. Eclipse学习笔记——快捷键
  10. 如何在csdn网站搜索自己写的博客文章
  11. socket pro
  12. 软件测试及标准(基于ISO/IEC/IEEE 29119系列)
  13. 计算机常用的存储设备外存有哪些,计算机中常用的存储设备有哪些?
  14. (转)Intel Atom处理器详细指标及市场前景
  15. python蓝牙模块教程_通过蓝牙将HC05蓝牙模块与python连接时出错
  16. 页面布局(1):淘宝首页
  17. UEStudio09.20.0.1007 注册码
  18. Linux搭建Web网站
  19. Linux——详解进程控制之等待
  20. 多头 空头 利多 利空 做多 做空

热门文章

  1. 10个精致的企业网站设计模板欣赏及点评
  2. Artifact is being deployed, please wait…
  3. 安利 Access denied for user root @ localhost错误
  4. js禁用退格键(BackSpace)
  5. sympy 符号函数求导
  6. Lulu的自动化测试学习(一)
  7. ①、学习HTML 简介
  8. Android 利用系统下载管理器下载apk
  9. 伯克利 计算机 音乐,加州大学伯克利分校音乐专业有哪些?
  10. 打印出每个学生的总分和平均分,每门课的总分和平均分