1. 概述

微信分享服务器的作用是为用户在微信浏览器端对来自网站以及客户端的页面进行二次分享链接时更友好的展示提供服务。为实现二次分享功能需要使用微信JS-SDK来开发.

微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包。微信JS-SDK功能很多。

通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用微信分享、扫一扫、卡券、支付等微信特有的能力,为微信用户提供更优质的网页体验。

2. 流程图

3. 微信二次分享功能实现的具体步骤

步骤一:绑定域名(微信公众平台配置)

先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。

备注:登录后可在“开发者中心”查看对应的接口权限。

需要配置白名单

步骤二:引入JS文件(需要分享的页面)

步骤三:通过config接口注入权限验证配置(微信分享服务器主要提供下面参数生成)

所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用

wx.config({

debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

appId: '', // 必填,公众号的唯一标识

timestamp: , // 必填,生成签名的时间戳

nonceStr: '', // 必填,生成签名的随机串

signature: '',// 必填,签名

jsApiList: [] // 必填,需要使用的JS接口列表

});

签名算法见文末的附录1,所有JS接口列表见文末的附录2

步骤四:通过ready接口处理成功验证(待分享的页面配置二次分享的页面信息如标题,缩略图,描述等)

wx.ready(function(){

// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。

# 分享到朋友圈按钮点击状态及自定义分享内容

wx.onMenuShareTimeline({

title: '', // 分享标题

link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

imgUrl: '', // 分享图标

success: function () {

// 用户点击了分享后执行的回调函数

}

});

# 分享到QQ按钮点击状态及自定义分享内容

wx.onMenuShareQQ({

title: '', // 分享标题

desc: '', // 分享描述

link: '', // 分享链接

imgUrl: '', // 分享图标

success: function () {

// 用户确认分享后执行的回调函数

},

cancel: function () {

// 用户取消分享后执行的回调函数

}

});

# 分享到腾讯微博按钮点击状态及自定义分享内容

wx.onMenuShareWeibo({

title: '', // 分享标题

desc: '', // 分享描述

link: '', // 分享链接

imgUrl: '', // 分享图标

success: function () {

// 用户确认分享后执行的回调函数

},

cancel: function () {

// 用户取消分享后执行的回调函数

}

});

# 分享到QQ空间按钮点击状态及自定义分享内容

wx.onMenuShareQZone({

title: '', // 分享标题

desc: '', // 分享描述

link: '', // 分享链接

imgUrl: '', // 分享图标

success: function () {

// 用户确认分享后执行的回调函数

},

cancel: function () {

// 用户取消分享后执行的回调函数

}

});

});

4. 如何提供权限验证配置(微信分享服务器的业务功能)

即如下参数

wx.config({

debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

appId: '', // 必填,公众号的唯一标识

timestamp: , // 必填,生成签名的时间戳

nonceStr: '', // 必填,生成签名的随机串

signature: '',// 必填,签名

jsApiList: [] // 必填,需要使用的JS接口列表这里我们使用微信分享相关的js接口列表["checkJsApi","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareWeibo"]

});

下面主要说明signature的生成流程

获取access_token

使用获取到的access_token获取jsapi_ticket

将排序后的参数URL键值对的格式(即key1=value1&key2=value)拼接成字符串,sha1签名,得到signature

4.1 获取access_token

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

接口调用请求说明

## https请求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

参数

是否必须

说明

grant_type

获取access_token填写client_credential

appid

第三方用户唯一凭证

secret

第三方用户唯一凭证密钥,即appsecret

返回说明

正常情况下,微信会返回下述JSON数据包给公众号:

{

"access_token":"ACCESS_TOKEN",

"expires_in":7200

}

参数说明

参数

说明

access_token

获取到的凭证

expires_in

凭证有效时间,单位:秒

4.2 获取jsapi_ticket

jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。

成功返回如下JSON:

{

"errcode":0,

"errmsg":"ok",

"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",

"expires_in":7200

}

获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。

4.3 生成签名

签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前待分享网页URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。

即signature=sha1(string1)。 示例:

noncestr=Wm3WZYTPz0wzccnW

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg

timestamp=1414587457

url=当前待分享网页URL

步骤1. 对所有待签名参数按照字段名的ASCII码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:

jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value

步骤2. 对string1进行sha1签名,得到signature:

0f9de62fce790f9a083d5c99e95740ceb90c27ed

注意事项

签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。

签名用的url必须是调用JS接口页面的完整URL。

出于安全考虑,开发者必须在服务器端实现签名的逻辑。

最终效果如下

js sdk 一键分享 微信_微信JSSdk实现分享功能相关推荐

  1. js sdk 一键分享 微信_微信jssdk实现分享到微信

    本来用的是这个插件http://overtrue.me/share.js/和百度分享 相同之处:在微信分享的时候,分享的链接都不能获取到缩略图... 不同之处:百度分享在微信低版本是可以看到缩略图的( ...

  2. jssdk分享设置_微信分享 JSSDK的使用

    我现在做过的在微信中运行的项目,基本上都有微信分享功能,所以,会使用JSSDK分享页面是非常重要的. 分享功能的代码一般会放在beforeCreate或mounted钩子中,代码如下: this.$h ...

  3. h5 修改title 微信_微信分享H5自定义标题描述和图片

    前言 哎呀,为啥人家分享的H5页面这么绚丽,有头有尾有妹子,唯独自己的又老有丑又难啃,自己都看不下去,千万不要给领导看见.然而,最终还是领导发话了这个必须得改. 永远不要指望微信给的案例能让你迅速解决 ...

  4. php微信分享文章怎么做的,微信开发使用 JSSDK 自定义分享内容 - 文章教程

    最近做一个砍价的小程序,需要用户分享自己的砍价页面,然后让朋友帮忙砍价,默认情况下微信的分享只有标题可用,描述部分会显示当前的网址,而且还没有缩略图,据说网页中如果有超过 300X300 的图片,会自 ...

  5. cydia多开微信_微信陌陌多开(N开)并且分开推送及一键隐藏教程

    微信,陌陌这类神器的作用大家都知道了,应该都迫切的需要双开甚至是N开微信和陌陌,今天就教大家N开微信陌陌并且分开推送吧,而且还可以一键隐藏多余的微信和陌陌喔,以免被家里那位检查手机. 首先,需要准备的 ...

  6. dat图片 电脑端微信_微信 PC 版迎来了重磅更新,可以在电脑端使用小程序了 !...

    戳上图,免费带走祖马龙 最近几天,微信团队又出了微信测试版,此次测试版主要关于 PC 版的微信.微信每一次更新,都会引起不少的躁动,那么此次都更新来什么呢? 微信 PC 端测试版 2.7.0 我们都知 ...

  7. js sdk 一键分享 微信_微信朋友圈分享自己拍的视频,一键开启这个设置,自带文字和音乐...

    你分享到朋友圈视频,还是简单的随手一拍,然后分享吗?怎样让你的分享的视频看起来高端.大气.上档次呢?其实微信视频新增编辑功能.能剪辑,能加文字和音乐,还能添加表情包.让你的视频更好看. 1.拍摄阶段 ...

  8. jssdk分享设置_微信JSSDK分享页面自定义当前链接最简单示例

    这个是使用微信原本的Deom修改 但是一定要注意几个注意事项,代码很简单,却让我一周mmp 在微信开发者工具调试,有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要 ...

  9. c# sha1签名 微信_微信公众号开发——微信JSSDK使用(踩坑)

    这段时间有个工作,是要在移动端给地图上加上导航功能,找了一圈,最后决定使用微信JSSDK的'打开地理位置接口'来开发,也是着实踩了下坑啊,分享一下 微信JSSDK介绍 因为微信公众号的开通对于大部分开 ...

最新文章

  1. 聊聊抖音、奈飞、Twitch、大疆、快手、B站的多媒体关键技术
  2. python学精通要多久-学Python编程难吗 从入门到精通学习Python要多久
  3. 限制mysql服务为本地访问
  4. 判断一个字符串是否是数值
  5. android封装全局调用的toast_Android Toast提示封装实例代码
  6. 常用的LINQ to SQL 用法
  7. 转JS总结1--(CSS书写规范和正则表达式)
  8. Linux的概念与体系 6. Linux文本流(转载)
  9. Ajax的load方法
  10. html如何连接外部网页,怎么链接一个外部的css文件?
  11. QT小项目-基于百度API的在线词典
  12. CDR有哪些常用的快捷键
  13. 垃圾邮件过滤技术发展现状及展望
  14. passing '' as 'this' argument discards qualifiers [-fpermissive]
  15. Typora中插入分页符
  16. 《清华梦的粉碎》by王垠
  17. 京东方、立讯精密纷纷向苹果靠拢,再次撕下国产手机遮羞布
  18. Elasticsearch 同义词配置
  19. Python使用bokeh制作条形图分类对比
  20. 国标、行标、地标、团标、企标以及国际标准的基础知识

热门文章

  1. 单片机c语言程序开发洗衣机,基于51单片机的洗衣机程序
  2. Go Http Get 和 Post 工具函数
  3. java语音验证码_Java实现发送手机短信语音验证功能代码实例
  4. 微信小程序功能——展开和收起查看
  5. Android 使用模板生成Word文档,支持手机直接查看word
  6. Kibana KQL语法
  7. t30什么时间升级鸿蒙,性能升级富士旗舰无反X-T3新固件发布
  8. EtherCAT运动控制卡的总线轴参数设置和轴运动
  9. c语言程序设计武汉大学出版社答案,C语言程序设计 高建华+实验与习题 刘英 武汉大学出版社...
  10. **cmd查看已连接的网络密码**