HTML链接分享微信 增加标题,描述,图标

HTML链接分享微信 增加标题,描述,图标

写在前面:
JS-SDK官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

本地测试需要申请测试公众号的appID和appsecret
申请地址:href=“https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login”

1:系统生产环境需要正式的appID和appsecret
2:并且域名需要在微信备案
3:且微信安全文件放置在站点根目录下

1:首先前台引入微信js

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

2:编写js脚本,调用一般处理程序(ashx)获取所需字段

        $(function () { 
            getloaca();
        })
        function getloaca() {
            var JSAccessToken = localStorage.getItem("JSAccessToken");
            if (JSAccessToken == null || JSAccessToken == "") {
                $.ajax({
                    url: "/Ajax/CRM/H5Share.ashx",
                    data: { t: "getAccessGetJs", JSAccessToken: "" },
                    type: 'post',
                    async: false,
                    success: function (data) {
                        var JsonData = JSON.parse(data);
                        getjsApi(JsonData.access_token);
                        localStorage.setItem("JSAccessToken", JsonData.access_token);
                    },
                    error: function (msg) {
                        console.log(msg);
                    }
                })
            }
            else {
                getjsApi(JSAccessToken);
            }

        }

        function getjsApi(AccessToken) {
            var jsticket = localStorage.getItem("jsapi_ticket")
            if (jsticket == null || jsticket == "") {
                $.ajax({
                    url: "/Ajax/CRM/H5Share.ashx",
                    data: { t: "AccessGetJs", access_token: AccessToken, signurl: window.location.href.split('#')[0] },
                    type: 'post',
                    async: false,
                    success: function (aaa) {
                        if (typeof (data) == "object") {
                            if (data.errcode = 42001) {
                                localStorage.setItem("JSAccessToken", "");
                                localStorage.setItem("jsapi_ticket", "");
                                getloaca();
                            }
                        }
                        var JsonData = JSON.parse(aaa);
                        if (JsonData.errmsg == "ok") {
                            localStorage.setItem("jsapi_ticket", JsonData.jsapi_ticket);
                            SetUserLoad(JsonData);
                        }
                        else {
                            localStorage.setItem("JSAccessToken", "");
                            getloaca();
                        }
                    },
                    error: function (msg) {
                        localStorage.setItem("JSAccessToken", "");
                        getloaca();
                    }
                })
            }
            else {
                $.ajax({
                    url: "/Ajax/CRM/H5Share.ashx",
                    type: 'post',
                    data: { t: "AccessGetJs", access_token: AccessToken, signurl: window.location.href.split('#')[0], jsticket: jsticket },
                    async: false,
                    success: function (data) {
                        var JsonData = JSON.parse(data);
                        if (JsonData.errmsg == "ok") {
                            SetUserLoad(JsonData);
                        }
                        else {
                            localStorage.setItem("JSAccessToken", "");
                            localStorage.setItem("jsapi_ticket", "");
                            getloaca();
                        }
                    },
                    error: function (msg) {
                        getloaca();
                        console.log(msg);
                    }
                })
            }

        }
        function SetUserLoad(JsonData) {
            wx.config({
                debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                appId: JsonData.appId, // 必填,公众号的唯一标识
                timestamp: JsonData.timestamp, // 必填,生成签名的时间戳
                nonceStr: JsonData.noncestr, // 必填,生成签名的随机串
                signature: JsonData.signature,// 必填,签名,见附录1
                jsApiList: ['checkJsApi', 'openLocation', 'getLocation', 'updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
            });
            wx.ready(function () {
                getjsJW();
            });
            wx.error(function (res) {
                console.log(res);
                localStorage.setItem("JSAccessToken", "");
                localStorage.setItem("jsapi_ticket", "");
                // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
            });

        }

3:后端代码,一般处理程序(ashx)


              public class AccessJs { public int errcode { get; set; } public string errmsg { get; set; } public string ticket { get; set; } public int expires_in { get; set; } }


        /// <summary>
        /// 得到调用微信接口的初始化参数
        /// </summary>
        /// <param name="access_token"></param>
        /// <returns></returns> 
        public void AccessGetJs()
        {

            string access_token = Request.Form["access_token"];
            string signurl = Request.Form["signurl"];
            string jsticket = Request.Form["jsticket"];
            AccessJs data = new AccessJs();
            if (string.IsNullOrWhiteSpace(jsticket))
            {
                string url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + access_token + "&type=jsapi";
                string response = HttpService.Get(url);
                data = WeChat.Common.JsonHelper.JSONToObject<AccessJs>(response);
            }
            else
            {
                data.errcode = 0; data.errmsg = "ok"; data.ticket = jsticket;
            }
            if (data.errmsg == "ok")
            {
                WxPayData model = new WxPayData();
                //调App接口参数

                string noncestr = WxPayApi.GenerateNonceStr();
                string timestamp = WxPayApi.GenerateTimeStamp();
                model.SetValue("jsapi_ticket", data.ticket);//jsapi 
                model.SetValue("noncestr", noncestr);//随机字符串 	
                model.SetValue("timestamp", timestamp);//时间戳	        
                model.SetValue("url", signurl);//url
                String string1 = "jsapi_ticket=" + data.ticket + "&noncestr=" + noncestr + "&timestamp=" + timestamp + "&url=" + signurl;
                //6、将字符串进行sha1加密  
                //String signature = SHA1(string1);  
                string signature = Sha1Sign(string1);
                model.SetValue("signature", signature);//签名
                model.SetValue("appId", WxPayConfig.WebAppsAppID);//appId
                model.SetValue("errmsg", "ok");//返回值
                model.SetValue("errurl", string1);//返回值 
                Response.Write(model.ToJson().Replace("\\", ""));
            }
            else
            {
                Response.Write(JsonConvert.SerializeObject(data));
            }
        }

        /// <summary>
        /// 调用微信接口获取access_token
        /// </summary>
        /// <param name="access_token"></param>
        /// <returns></returns>
        public void getAccessGetJs()
        {
            string JSAccessToken = Request.Form["JSAccessToken"];
            string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + WxPayConfig.WebAppsAppID + "&secret=" + WxPayConfig.WebAppsAppSecret;
            //string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx962ac84d0d14666d&secret=1ee7e5af8b409452d1cbc00aa7a3d340";
            string response = HttpService.Get(url);
            HttpContext.Current.Response.Write(response);
        }
  
        private static string Sha1Sign(string str, Encoding encoding = null)
        {
            if (encoding == null) encoding = Encoding.UTF8;
            var buffer = encoding.GetBytes(str);
            var data = SHA1.Create().ComputeHash(buffer);
            StringBuilder sub = new StringBuilder();
            foreach (var t in data)
            {
                sub.Append(t.ToString("x2"));
            }
            return sub.ToString();
        }



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将 HTML 变成微信的自定义分享,你可以使用微信 JavaScript SDK。这是微信提供的一组 JavaScript 库,可以让你在 HTML 页面中调用微信分享功能。 下面是一个简单的示例,展示了如何使用微信 JavaScript SDK 实现自定义分享: ```html <!DOCTYPE html> <html> <head> <title>微信自定义分享</title> </head> <body> <!-- 引入微信 JavaScript SDK --> <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> <script> // 配置微信分享 wx.config({ // 填写你的微信公众号 appId 和 appSecret appId: 'your-app-id', appSecret: 'your-app-secret', // 配置需要使用的分享功能 jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] }); // 配置分享内容 wx.ready(function () { wx.onMenuShareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享图片的 URL', success: function () { // 用户分享成功时执行的回调函数 }, cancel: function () { // 用户取消分享时执行的回调函数 } }); wx.onMenuShareAppMessage({ title: '分享标题', desc: '分享描述', link: '分享链接', imgUrl: '分享图片的 URL', type: 'link', dataUrl: '', success: function () { // 用户分享成功时执行的回调函数 }, cancel: function () { // 用户取消分享时执行的回调函数 } }); }); </script> ### 回答2: 要将HTML变成微信的自定义分享,首先需要在HTML文件中添加微信的JavaScript SDK,以便与微信进行交互。具体步骤如下: 1. 在HTML文件中添加微信的JavaScript SDK。 可以将以下代码插入到`<head>`标签内: ``` <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 2. 注册微信分享的配置信息。 在页面加载完毕后,通过调用微信SDK的API,使用有效的AppID和AppSecret等信息进行微信分享的配置。示例如下: ``` wx.config({ debug: false, // 是否开启调试模式 appId: '你的AppID', timestamp: '生成配置信息的时间戳', nonceStr: '生成配置信息的随机字符串', signature: '生成的签名', jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage'] // 需要使用的微信分享API }); ``` 3. 设置分享的内容和回调函数。 在微信配置成功后,使用`wx.ready`函数设置分享标题描述链接分享图标等信息,并设置分享的回调函数。 - 分享到朋友圈: ``` wx.onMenuShareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享图标', success: function () { // 分享成功后的回调函数 }, cancel: function () { // 用户取消分享后的回调函数 } }); ``` - 分享给朋友: ``` wx.onMenuShareAppMessage({ title: '分享标题', desc: '分享描述', link: '分享链接', imgUrl: '分享图标', success: function () { // 分享成功后的回调函数 }, cancel: function () { // 用户取消分享后的回调函数 } }); ``` 4. 最后,在HTML文件中触发微信SDK的加载: ``` <script> wx.ready(function() { // 分享的配置信息和回调函数 }); </script> ``` 通过以上步骤,可以将HTML文件中的内容转为微信的自定义分享形式。在微信中打开页面时,会根据配置信息显示分享到朋友圈和分享给朋友的按钮。用户点击按钮后,即可进行分享操作,并触发对应的回调函数。 ### 回答3: 要将HTML变成微信的自定义分享,你可以按照以下步骤进行操作。 1. 在HTML文件的头部添加如下代码,以引入微信开发者工具包: ```html <script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> ``` 2. 在微信公众平台上注册并获取到你的公众号的AppID和AppSecret。 3. 在HTML文件的底部添加如下代码,用于微信分享的配置: ```html <script> wx.config({ appId: '你的AppID', timestamp: '生成签名的时间戳', nonceStr: '生成签名的随机字符串', signature: '签名', jsApiList: ['onMenuShareAppMessage', 'onMenuShareTimeline'] // 需要使用的分享接口 }); wx.ready(function () { // 自定义分享标题描述链接图标 wx.onMenuShareAppMessage({ title: '分享标题', desc: '分享描述', link: '分享链接', imgUrl: '分享图标', success: function () { // 用户确认分享后的回调函数 }, cancel: function () { // 用户取消分享后的回调函数 } }); wx.onMenuShareTimeline({ title: '分享标题', link: '分享链接', imgUrl: '分享图标', success: function () { // 用户确认分享后的回调函数 }, cancel: function () { // 用户取消分享后的回调函数 } }); }); </script> ``` 4. 在`wx.config`代码块中,将`appId`替换为你的AppID,然后使用后端代码来生成其他几个参数(`timestamp`、`nonceStr`、`signature`)并填充进去。 5. 在`wx.onMenuShareAppMessage`和`wx.onMenuShareTimeline`代码块中,替换相应的分享标题描述链接图标。 通过以上步骤,你可以将HTML变成微信的自定义分享。当用户点击分享按钮时,自定义的分享内容将在微信中显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值