如何使用微信JS-SDK实际微信分享功能 js

.NET调用微信JS-SDK实现获取openid和分享功能 - 下载频道
- CSDN.NET
&&&&.NET调用微信JS-SDK实现获取openid和分享功能
.NET调用微信JS-SDK实现获取openid和分享功能
VS2010开发,MVC3架构。
通过调用微信官方接口实现获取openid,和分享好友功能。底层获取signature和jsapi_ticket,并在服务端进行缓存AccessToken和jsapi_ticket。
注意:请按照index页面上的说明配置。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
移动开发下载排行微信开放11个JS-SDK接口
细说对电商的4个可能影响
核心提示:微信宣布开放11个JS-SDK接口后,众多微信第三方开发者开始“激动”,纷纷给微信的这一举措点赞。一、更多基于微信的webapp开发者出现 二、根据用户网络状况推送内容 三、获取用户卡券使用数据 四、更灵活的导购
微信宣布开放11个JS-SDK接口后,众多微信第三方开发者开始&激动&,纷纷给微信的这一举措点赞。而具体到电商行业,这次的接口开放能带来些什么?发商机网综合微信企业介绍以及相关微信第三方开发者的反馈,整理出以下几种可能性:
一、更多基于微信的webapp开发者出现
&腾讯本次开放js-sdk, 其开放程度可以让第三方开发者足以做出一个基于微信浏览器版本的微信,对于构建微信生态圈又走出了一大步。对于第三方开发者来说,舍弃原生App,专注做好基于微信的H5 webapp,比以往时候都更容易,当然这也是腾讯希望看到的。&一位微信第三方开发者告诉发商机网。此前,国内已经有微盟、有赞等基于微信的开发者出现,但其主要扮演服务商角色,另外也有一些完全基于微信成长起来的电商或者O2O项目&&没有企业网站、没有App,不过由于接口有限,其在某些功能的实现上非常&迂回&,无法直接实现。
最典型的案例是图片打印类应用,用户需要通过在公众号对话模式下发送图片,而微信开放图像类接口之后,开发者将可以直接在微信网页上直接选择、编辑图片或者调用手机摄像头进行拍照。对于电商来说,该接口的开放意味着网页内能实现用户晒单。
不过,也有开发者认为,相比于webapp,原生App仍然有其不可比拟的优势,如果不愿意将来太多受制于微信,很多开发者仍然会坚持原生App。
二、根据用户网络状况推送内容
大多数的公众账号在推送内容后,会因为图片多、有视频等耗流量的素材而影响用户使用和接收。尤其是电商类公众号,设计到下单、支付的网页结构都相对复杂,且受网络状态影响非常大,容易导致购买转化率低下。
而据微信企业介绍,在&设备信息类接口&开放后,开发者可以获取用户当前手机设备的网络状态,如2G、3G、4G或Wi-Fi,通过技术手段加以干预,比如根据设备网络状态推送合适的网页版本,那么将大大增加网页的体验和整体转化率。
三、获取用户卡券使用数据
除了可以获取用户设备网络状况,开发者还将能获取用户卡券使用状况。微信开放卡券接口之后,商户可以在网页中批量添加多种卡券,并直接为用户展示其附近的门店能够使用哪些卡券,引导其选择领取。更重要的是,商户在后台的&用户选择列表&中,可以快速了解相应商圈的用户喜好、整体产品受欢迎程度等,比如XX小区附近用户更爱&牛堡+姜饮&,以便后期的商品调配与优化经营。
四、更灵活的导购
此前,用户若要在微信小店查看商品信息或者购买某样商品,前提是得扫描二维码或者加关注才能进入商品页面。而此次,微信开放了微信小店接口,称用户只要在网页内点击相应的按钮,就能直接打开微信小店的商品详情页,并完成咨询和购买。调用微信的JS SDK遭遇:invalid signature,该怎么办? - 小媒体
调用微信的JS SDK遭遇:invalid signature,该怎么办?
调用微信的JS SDK,首要的就是验证签名,出于各种原因,微信服务器可能会返回一个:invalid signature,会让人摸不着头脑。那么该怎么办呢?
1.首先确认签名算法是正确的,到页面工具进行校验。也就是你自己后台生成签名要和微信校验算法生成的签名一致才可以。
2.还有一个笔者曾遇到的坑,看到微信SDK上说token和ticket需要在服务器做缓存,有效期是7200秒,写代码的时候没有仔细思索,导致把生成的签名也给缓存了,用几次就报invalid signature,后来仔细读文档之后,果断改为每次打开页面都重新生成签名即可,token和ticket依然被缓存,但timestamp是变化的,因此每次签名也是不同的。
3.参与签名的字段包括有效的 jsapi_ticket(获取方式详见), noncestr (随机字符串,由开发者随机生成),timestamp (由开发者生成的当前时间戳), url(当前网页的URL,不包含#及其后面部分。
4.特别注意:你在利用参数生成签名的时候,要对所有待签名参数按照字段名的 ASCII 码从小到大排序(字典序)后,使用 URL 键值对的格式(即key1=value1&key2=value2…)拼接成字符串 string1。这里需要注意的是所有参数名均为小写字符。
5.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
6.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。
本文链接:
,转载务必注明来源链接。现在的位置:
微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)...
先上测试地址以示成功:
用微信打开下面地址测试
/deep-love/index.html(/deep-love/index.html)
获直接扫二维码君
用异步ajax的方式获取数字签名
异步的方式好
1、前后端分离啊
2、一个服务可以供多个微信公众帐号的数字签名服务
在服务器端用NodeJS跑起一个数字签名生成服务,web端用ajax方式请求NodeJS服务获取数字签名信息
得到信息后配置微信JS-SDK
第一步 认证的微信公众帐号
首先你得拥有一个通过认证了的微信公众号或者开发者帐号,没有通过认证的公众帐号。数字签名认证也能成功,但是分享信息是无法设置成功的;
第二步 添加安全域名
在公众帐号平台后台添加app运行的域名地址,可以理解为为某个域名添加白名单功能
以我们公司旗下的榕树下为例:
微信公众号是:榕树下,添加了为安全域名,那么我在上的网页可以使用榕树下公众帐号的数字签名了
第三步 生成数字签名
在微信公众平台后台上面能找到一个 appid 及 secret字符串
通过这两个数据,请求微信提供的两个公开API地址,生成对应的access_token后再生成ticket再通过规则加密成数字签名
注意,数字签名必须在服务端生成,这里我以NodeJS来实现
数字签名具体生成过程,NodeJS版本
1、获取微信签名所需的access_token
https.get('https://api./cgi-bin/token?grant_type=client_credential&appid=你的appid写在这里&secret=你的secret写在这里', function(_res) {
// 这个异步回调里可以获取access_token
2、获取微信签名所需的ticket
https.get('https://api./cgi-bin/ticket/getticket?access_token=上一步中获取的access_token&type=jsapi', function(_res){
// 这个异步回调里可以获取ticket
3、生成数字签名具体方法
ticket、 noncestr、timestamp、url通过微信的规则用sha1加密
noncestr和timestamp在微信官方sample包中有具体的生成方法函数
// noncestr
var createNonceStr = function() {
return Math.random().toString(36).substr(2, 15);
// timestamp
var createTimeStamp = function () {
return parseInt(new Date().getTime() / 1000) + '';
也可以参考我代码中的代码
// 计算签名方法
var calcSignature = function (ticket, noncestr, ts, url) {
var str = 'jsapi_ticket=' + ticket + '&noncestr=' + noncestr + '&timestamp='+ ts +'&url=' +
shaObj = new jsSHA(str, 'TEXT');
return shaObj.getHash('SHA-1', 'HEX');
var signature = calcSignature(ticket, noncestr, timestamp, url);
4、返回输出signature数字签名以及在生成数字签名时用到的timestamp、nonceStr、url、及appid
因为在客户内初始化微信JS-SDK中还要用到
5、至此数字签名生成成功
第四步 在web中如何使用数字签名?
1、引入微信JS-SDK
http://res./open/js/jweixin-1.0.0.js(http://res./open/js/jweixin-1.0.0.js)
2、请求服务器获取数字签名
在web上用ajax方式请求NodeJS服务地址,请求时将当前web地址url上传至服务器
服务器生成数字签名后返回:
signature,timestamp, appid, nonceStr
这四个数据用于配置微信JS-SDK
wx.config({
debug: true,
appId: appid,
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'hideMenuItems',
'chooseImage'
3、在wx.ready内调用API
wx.ready(function(){
var sdata = {
title: '那年|时光遗忘了,文字却清晰地复刻着',
desc: '那年|时光遗忘了,文字却清晰地复刻着',
link: '/deep-love/index2.html',
imgUrl: '/xuangedan/other-project//img/share-wx-logo.jpg',
success: function () {
alert('用户确认分享后执行的回调函数');
cancel: function () {
alert('用户取消分享后执行的回调函数');
wx.onMenuShareTimeline(sdata);
wx.onMenuShareAppMessage(sdata);
关于数字签名过期与微信API的1w次请求的限制问题
由于微信提供的两个数字签名生成API有7200秒的有效期,并且暂时有1w次的限制,所以在我们自己服务器上需要将数字签名缓存
如果用户请求时没缓存中没有数字签名,那么请求执行第三步 生成数字签名
如果缓存中有,并且是在2小时内那么直接返回数字签名信息,不去请求微信服务器
如果缓存中的数字签名过期了(超过2小时)则还是执行第三步 生成数字签名
注意:由于微信规定地址栏中的参数发生变化都认作是新的请求地址,数字签名也需要重新生成。
新生成的数字签名将存入cachedSignatures对象内
缓存中的数据结构将url设为key
数据结构如下:
var cachedSignatures = {
appid: ’微信认证帐号的的appid'
,secret: '微信认证帐号的secret'
,timestamp: ''
,noncestr: 'ihj9ezfxf26jq0k'
测试项目源码
我的项目源码已经放到Github上了,有需要的可以pull下来看一看,
NodeJS我也是一知半解,将就着用,多有不足之处,欢迎交流
源码地址:/willian12345/wechat-JS-SDK-demo(/willian12345/wechat-JS-SDK-demo)
======== ======== ======== ======== ======== ======== ======== ======== ======== ========
博客园willian12345
by sheldon.wang
转载时请保留本文出处,谢谢您的合作
上一篇: &&下一篇:微信JS SDK 接口调用详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
微信JS SDK 接口调用详解
上传于||文档简介
&&最​新05​年月​微​信​J​S​ ​接​口​调​用
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
你可能喜欢

我要回帖

更多关于 微信分享sdk 的文章

 

随机推荐