微信通过JSSDK分享朋友圈

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


访问微信端类在上一篇文章。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
UniApp是一种基于Vue.js的跨平台开发框架,可以用于同时开发iOS、Android和Web应用。要实现微信分享朋友圈,你可以按照以下步骤进行操作: 1. 在UniApp项目中安装并引入微信JSSDK,可以通过npm安装或者直接引入CDN链接。 2. 在项目的`main.js`文件中,使用`Vue.prototype`将微信JSSDK挂载到Vue实例上,以便在全局使用。 3. 在需要分享的页面中,调用微信JSSDK提供的接口进行分享配置和分享操作。 具体的实现步骤如下: 1. 安装微信JSSDK: ``` npm install weixin-js-sdk ``` 2. 在`main.js`中引入并挂载微信JSSDK: ```javascript import wx from 'weixin-js-sdk' Vue.prototype.$wx = wx ``` 3. 在需要分享的页面中,调用微信JSSDK提供的接口进行分享配置和分享操作。例如,在`Share.vue`组件中: ```javascript export default { mounted() { this.wxConfig() }, methods: { wxConfig() { // 获取后端提供的微信配置信息 // 这里假设后端返回的配置信息为wxConfigData const wxConfigData = { appId: 'your_appId', timestamp: 'your_timestamp', nonceStr: 'your_nonceStr', signature: 'your_signature' } // 调用微信JSSDK的config方法进行配置 this.$wx.config({ debug: false, appId: wxConfigData.appId, timestamp: wxConfigData.timestamp, nonceStr: wxConfigData.nonceStr, signature: wxConfigData.signature, jsApiList: ['onMenuShareTimeline'] // 需要使用的接口列表 }) // 配置成功后,调用微信JSSDK的ready方法 this.$wx.ready(() => { // 在ready回调中进行分享操作 this.wxShareTimeline() }) }, wxShareTimeline() { // 调用微信JSSDK的onMenuShareTimeline方法进行分享朋友圈 this.$wx.onMenuShareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享图片链接', success: function () { // 分享成功的回调函数 console.log('分享成功') }, cancel: function () { // 取消分享的回调函数 console.log('取消分享') } }) } } } ``` 以上就是使用UniApp实现微信分享朋友圈的基本步骤。你可以根据自己的需求进行配置和定制化。如果有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值