微信通过JSSDK分享朋友圈

原创 2016年08月30日 13:19:47

先在微信公众号里面配置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; }
    }


访问微信端类在上一篇文章。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

微信js-sdk实现“分享到朋友圈”和“发送给朋友”

微信接口文档地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115&token=&lang=zh_CN 实现步骤: 1...

微信JSSDK分享功能详解

微信6.0之后JSSDK的调用,微信分享功能的实现,傻瓜教程
  • ty_hf
  • ty_hf
  • 2016年01月26日 14:19
  • 40235

asp.net 微信分享到朋友圈,分享给朋友接口

微信分享到朋友圈,分享给朋友说明: 转载:http://www.cnblogs.com/ysyn/archive/2015/07/23/4665897.html、 引言: ...

微信JS-SDK实现自定义分享功能,分享给朋友,分享到朋友圈

小编也经常在微信朋友圈分享一些好的文章或者让人哭或笑的段子,就在手机右上角的三个竖点一键分享就ok了,那么对于分享到朋友圈是怎么实现的呢?对于那种活动分享送流量是怎么定位分享者的呢?而想要将文章发送给...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

微信jssdk已无力吐槽

微信强大的整合能力让企业公众号的开发迅速窜红,尤其是企业需要个性化定制的一些功能,公司在同时上线的app和触屏版的应用中,微信分享自然是不可或缺的重要一环。纵观现在大多数的微信公众号,分享大都是弹出二...

微信JSSDK说明文档

http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E6.AD.A5.E9.AA.A4.E4.B8.80.EF....

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

javascript实现页面的重新加载和页面的刷新

1、reload 方法,该方法强迫浏览器刷新当前页面。 语法:location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存...

html5视频前端视频上传,手机拍照上传,手机录像上传

html5 微信开发 公众号 上传图片 图片上传 视频上传 上传视频 上传文件 手机拍照上传 手机录像上传...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:微信通过JSSDK分享朋友圈
举报原因:
原因补充:

(最多只允许输入30个字)