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 相关文章推荐
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
javascript窗口宽高,鼠标位置,滚动高度(详细解析)
Nov 18 Javascript
angularjs实现下拉列表的选中事件示例
Mar 03 Javascript
vue实现手机号码抽奖上下滚动动画示例
Oct 18 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 30 Javascript
小程序实现订单倒计时功能
Apr 23 Javascript
如何进行微信公众号开发的本地调试的方法
Jun 16 Javascript
vue中使用v-model完成组件间的通信
Aug 22 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
Jan 16 jQuery
用vue 实现手机触屏滑动功能
May 28 Javascript
vue中的计算属性和侦听属性
Nov 06 Javascript
8个JS的reduce使用实例和reduce操作方式
Oct 05 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
php eval函数一句话木马代码
2015/05/21 PHP
php发送短信验证码完成注册功能
2015/11/24 PHP
详解phpstorm2020最新破解方法
2020/09/17 PHP
jquery如何实现锚点链接之间的平滑滚动
2013/12/02 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
基于zepto.js实现仿手机QQ空间的大图查看组件ImageView.js详解
2015/03/05 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
2015/03/13 Javascript
浅谈jquery事件处理
2015/04/24 Javascript
详解JavaScript权威指南之对象
2016/09/27 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
基于javascript实现的购物商城商品倒计时实例
2016/12/11 Javascript
js实现鼠标左右移动,图片也跟着移动效果
2017/01/25 Javascript
利用node.js如何创建子进程详解
2017/12/09 Javascript
nodejs使用http模块发送get与post请求的方法示例
2018/01/08 NodeJs
vue2.0 实现导航守卫(路由守卫)
2018/05/21 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
jQuery常见的遍历DOM操作详解
2018/09/05 jQuery
js函数和this用法实例分析
2020/03/13 Javascript
写给新手同学的vuex快速上手指北小结
2020/04/14 Javascript
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
构建Python包的五个简单准则简介
2015/06/15 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
2020/12/21 Python
Nisbets爱尔兰:英国最大的厨房和餐饮设备供应商
2019/01/26 全球购物
英国信箱在线鲜花速递公司:Bloom & Wild
2019/03/10 全球购物
毕业生自我推荐
2013/11/04 职场文书
政府四风问题整改措施
2014/10/04 职场文书
公务员个人总结
2015/02/12 职场文书
催款函范本大全
2015/06/24 职场文书
Go语言中break label与goto label的区别
2021/04/28 Golang
yyds什么意思?90后已经听不懂00后讲话了……
2022/02/03 杂记
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android