js微信分享接口调用详解


Posted in Javascript onJuly 23, 2019

本文实例为大家分享了js微信分享接口调用的具体代码,供大家参考,具体内容如下

微信api直通车,仔细阅读官方文档问题都可以解决的

好吧,最近用到了,整理下发出来,就这个效果吧

js微信分享接口调用详解

1.设置js接口安全域名

这需要使用微信的jssdk,先需要在微信公众号后台进行设置:公众号设置-->功能设置-->JS接口安全域名。打开这个页面之后你会看到下面的提示。需要先下载这个文件并上传到指定域名的根目录。

js微信分享接口调用详解

这个文件里面是一个字符串,从名称看是用来校验用的。先上传了这个文件,你才能保存成功。这样你就可以使用jssdk了。

2.页面,要从后台获取签名

页面核心代码,用的是jweixin-1.4.0.js,最新版的说是将之前的四个接口合并成两个,不知道为什么没起作用,所以还是用之前的四个吧

<script src="http://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
<script>
 var currurl = decodeURIComponent(location.href.split('#')[0]);
 
 var res = ${(jsApi)!};
 wx.config({
 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
 appId: res.appId, // 必填,公众号的唯一标识
 timestamp: res.timestamp, // 必填,生成签名的时间戳
 nonceStr: res.nonceStr, // 必填,生成签名的随机串
 signature: res.signature,// 必填,签名
 jsApiList: ["checkJsApi","updateAppMessageShareData","updateTimelineShareData", "onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone"] // 必填,需要使用的JS接口列表
 });
 wx.ready(function () {
 // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
 wx.checkJsApi({
 jsApiList : ["checkJsApi", "updateAppMessageShareData","updateTimelineShareData","onMenuShareTimeline", "onMenuShareAppMessage", "onMenuShareQQ", "onMenuShareQZone"], // 需要检测的JS接口列表,所有JS接口列表见附录2,
 success : function(res) {
 // 以键值对的形式返回,可用的api值true,不可用为false
 // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
 // alert(res.checkResult);
 // alert(res.errMsg);
 }
 });
 //自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
 wx.updateAppMessageShareData({
 title:"饿了么红包", // 分享标题
 desc: "饿了么红包描述", // 分享描述
 link: currurl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
 imgUrl: ${(pic)!}, // 分享图标
 success: function () {
 // 设置成功
 }
 })
 //自定义“分享到朋友圈”及“分享到QQ空间”按钮的分享内容(1.4.0)
 wx.updateTimelineShareData({
 title:"饿了么红包", // 分享标题
 link: currurl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
 imgUrl: ${(pic)!},
 success: function () {
 // 设置成功
 }
 });
 //朋友圈
 wx.onMenuShareTimeline({
 title:"饿了么红包", // 分享标题
 link: currurl, // 分享链接
 imgUrl: "图片地址",
 success: function (res) {
 },
 cancel: function (res) {
 },
 fail: function (res) {
 alert(JSON.stringify(res));
 }
 });
 //朋友
 wx.onMenuShareAppMessage({
 title:"饿了么红包", // 分享标题
 desc: "饿了么红包描述", // 分享描述
 link: currurl, // 分享链接
 imgUrl: "图片地址",
 type: '', // 分享类型,music、video或link,不填默认为link
 dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
 success: function () {
 // 用户确认分享后执行的回调函数
 },
 cancel: function () {
 // 用户取消分享后执行的回调函数
 }
 });
 //QQ
 wx.onMenuShareQQ({
 title:"饿了么红包", // 分享标题
 desc: "饿了么红包描述", // 分享描述
 link: currurl, // 分享链接
 imgUrl: "图片地址", // 分享图标
 success: function () {
 // 用户确认分享后执行的回调函数
 },
 cancel: function () {
 // 用户取消分享后执行的回调函数
 }
 });
 //QQ空间
 wx.onMenuShareQZone({
 title:"饿了么红包", // 分享标题
 desc: ${(describe)!}, // 分享描述
 link: currurl, // 分享链接
 imgUrl: "图片地址", // 分享图标
 success: function () {
 // 用户确认分享后执行的回调函数
 },
 cancel: function () {
 // 用户取消分享后执行的回调函数
 }
 });
 
 });
 wx.error(function (res) {
 // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
 console.log("初始化wx.config失败" + res)
 });
</script>

 3.后端获取签名,注意签名的算法,不然就会签名失败啊,怎么算的,看微信附录1-JS-SDK使用权限签名算法

@GetMapping(value = "/test")
public String test(@RequestParam(value = "id")Long id,Model model,HttpServletRequest request ) throws WxErrorException{
 String url = request.getRequestURL().toString()+"?id="+id;
 WxJsapiSignature sign = wxMpService.createJsapiSignature(url);
 model.addAttribute("jsApi",JsonUtils.toJson(sign));
 return "对应的页面";
 }

最后说总结下思路,1下载文件,2后台获取签名(注意签名算法),3页面引入js调用接口。

完成!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
form表单只提交数据而不进行页面跳转的解决方案
Sep 18 Javascript
js判断上传文件的类型和大小示例代码
Oct 18 Javascript
js打造数组转json函数
Jan 14 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
javascript表单事件处理方法详解
May 15 Javascript
jQuery 3.0中存在问题及解决办法
Jul 15 Javascript
jquery+CSS3实现3D拖拽相册效果
Jul 18 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
Sep 17 Javascript
dts文件中删除一个node或属性的操作方法
Aug 05 Javascript
对angular4子路由&amp;辅助路由详解
Oct 09 Javascript
JavaScript 截取字符串代码实例
Sep 05 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
Jul 23 #Javascript
vue 地区选择器v-distpicker的常用功能
Jul 23 #Javascript
微信小程序 网络通信实现详解
Jul 23 #Javascript
微信小程序 确认框的实现(附代码)
Jul 23 #Javascript
koa2 从入门到精通(小结)
Jul 23 #Javascript
详解JavaScript 浮点数运算的精度问题
Jul 23 #Javascript
前端插件之Bootstrap Dual Listbox使用教程
Jul 23 #Javascript
You might like
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
thinkphp如何获取客户端IP
2015/11/03 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
CI框架常用方法小结
2016/05/17 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
通过jquery实现tab标签浏览效果
2007/02/20 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
JavaScript实现MIPS乘法模拟的方法
2015/04/17 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
js数组常用操作方法小结(增加,删除,合并,分割等)
2016/08/02 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
2018/09/12 Javascript
通过实例讲解JS如何防抖动
2019/06/15 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
vue 验证码界面实现点击后标灰并设置div按钮不可点击状态
2019/10/28 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
python使用reportlab画图示例(含中文汉字)
2013/12/03 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
Python第三方Window模块文件的几种安装方法
2018/11/22 Python
python读取xlsx的方法
2018/12/25 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
使用matplotlib的pyplot模块绘图的实现示例
2020/07/12 Python
HTML5离线缓存在tomcat下部署可实现图片flash等离线浏览
2012/12/13 HTML / CSS
通用C#笔试题附答案
2016/11/26 面试题
我们在web应用开发过程中经常遇到输出某种编码的字符,如iso8859-1等,如何输出一个某种编码的字符串?
2014/03/30 面试题
金融专业个人求职信
2013/09/22 职场文书
安全生产承诺书
2014/03/26 职场文书
幼儿园师德师风学习材料
2014/05/29 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
2014镇党委书记党建工作汇报材料
2014/11/02 职场文书
2015年个人招商工作总结
2015/04/25 职场文书