http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 28413|回复: 11

[学习交流] 关于微信新版JS-SDK分享朋友圈的开发心得

[复制链接]
发表于 2015-1-14 16:13:29 | 显示全部楼层 |阅读模式
本帖最后由 songwenqi 于 2015-1-14 16:17 编辑

    最近在搞一个关于微信分享的项目,之前做的分享,因为微信版本的升级问题导致不可用了,本人测的几个版本是这样的,之前的老的js引用微信版本6.0.0.54实测还是可以继续使用的,但是版本6.0.2.56以上就不能继续了。所以不得不跟随腾讯的脚步继续升级项目的微信分享js功能。
    现在微信js SDk比之前相比更加的规范了,所以需要使用的话必须按照微信开放平台的微信JS-SDK说明文档来,步骤很简单。步骤我就不多说了可以到开放平台自己看,个人感觉就是步骤2里的通过config接口注入权限验证配置麻烦一点,这里需要写对应的接口程序来获取签名。
[JavaScript] 纯文本查看 复制代码
wx.config({
    debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
    appId: '', // 必填,公众号的唯一标识
    timestamp: , // 必填,生成签名的时间戳
    nonceStr: '', // 必填,生成签名的随机串
    signature: '',// 必填,签名,见附录1
    jsApiList: [] // 必填,需要使用的JS接口列表
});

appId就是公众号id,登陆公众号后台可以看到,我们需要写个接口来实现获取signature签名:
[C#] 纯文本查看 复制代码
  /// 获取JS-SDK权限验证的签名
        /// </summary>
        /// <param name="timestamp"></param>
        /// <param name="nonceStr"></param>
        /// <param name="url"></param>
        /// <returns></returns>
        public static string GetSignature(long timestamp, string nonceStr, string url)
        {
            try
            {
                //这里是获取jsapi_ticket  方法就不粘贴了
                var jsapi_ticket = GetJSApi_ticket();
                //对所有待签名参数按照字段名的ASCII 码从小到大排序
                var string1 = string.Format("jsapi_ticket={0}&noncestr={1}×tamp={2}&url={3}", jsapi_ticket, nonceStr, timestamp, url);
                // 对string1进行sha1签名,得到signature
                var signature = FormsAuthentication.HashPasswordForStoringInConfigFile(string1, "SHA1");
                return signature;
            }
            catch 
            {

                return string.Empty;
            }
        }
获取jsapi_ticket 的方法很简单,就是先获取access_token,在通过access_token去get一下官网给的url地址,就会得到jsapi_ticket ,得到这个jsapi_ticket 后就可以通过上面的代码实现来获取签名。需要强调的是jsapi_ticket 过期时间是2小时,需要自己在服务端缓存一下,因为频繁get来获取jsapi_ticket 导致api调用受限,影响自身业务。我们可以采用后台拼接字符串的方式来生成config接口注入权限验证配置,看代码:
[C#] 纯文本查看 复制代码
 string config = @"wx.config({
                                    debug: false, 
                                    appId: 'appid', 
                                    timestamp:{0} , 
                                    nonceStr:'{1}', 
                                    signature:'{2}',
                                    jsApiList: ['onMenuShareTimeline'] 
                                });";
                    var timestamp = DateTime.Now.Ticks.ToString().Substring(0, 10);//时间戳 我是这样生成的
                    var noncestr = "kjkjkjkjljkjjjjkj";//这里是随机字符串,可以自己写个算法之类的实现
                    var uri = Request.Url.ToString().Replace("#", "");//当前网页的URL,不包含#及其后面部分,#后面有参数的需要处理,我这个没对#后参数处理
                    var signature = WeiXin.GetSignature(Convert.ToInt64(timestamp), noncestr, uri);//调取上面的获取signature的方法
                    config = config.Replace("{0}", timestamp.ToString()).Replace("{1}", noncestr).Replace("{2}", signature);
config可以在aspx页面以<%=config%>来实现,也可以通过ScriptManager.RegisterStartupScript方法注册到页面上。然后就可以调用官方给的分享等js方法来实现自己的功能了。以上就是本人最近做的关于微信分享引用js等的实现方法,写出来和大家一块研究一下。




1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2015-1-14 22:45:03 | 显示全部楼层
看过帖子回复一下是个好习惯
发表于 2015-1-15 15:26:29 | 显示全部楼层
受教了学习中……
发表于 2015-1-26 09:30:47 | 显示全部楼层
受教了学习中……
能否提供页面 参考?
谢谢!
 楼主| 发表于 2015-1-26 12:33:09 | 显示全部楼层
№\老唐 发表于 2015-1-26 09:30
受教了学习中……
能否提供页面 参考?
谢谢!

不好意思  这个暂时没有例子  整的项目是需要登录才能分享的
发表于 2015-2-6 10:35:32 | 显示全部楼层
楼主有个问题需要请教你,能够加一下QQ,我的QQ:244282742
发表于 2015-2-11 09:35:56 | 显示全部楼层
感谢您的无私奉献,真是帮了我的大忙了
发表于 2015-2-11 09:37:05 | 显示全部楼层
感谢您的无私奉献,真是帮了我的大忙了
发表于 2015-3-30 15:02:46 | 显示全部楼层
非常感谢楼主分享,谢谢!
发表于 2015-4-7 10:18:25 | 显示全部楼层
还是没明白  能否打包   仔细看看  万分感谢
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-23 00:40

© 2014-2021

快速回复 返回顶部 返回列表