使用微信SDK自定义分享的方法


Posted in Javascript onJuly 03, 2019

一、背景介绍

在微信中打开自己网站的链接,经常会变成下面这样

使用微信SDK自定义分享的方法

不太好看有木有,如果你想在分享出来的东西带上你的logo,带上你想要的描述,怎么办,像下面这样

使用微信SDK自定义分享的方法

这就需要用到微信的分享SDK,文档链接:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

二、微信SDK使用说明第一步

第一步

先要在微信公众平台上注册一个微信公众号,还必须要是认证的企业或组织,流程走下来大概要个两三天的时间吧,只有认证了的公众号才有分享SDK的权限,个人的不行,这个比较麻烦。账号申请成功后会有AppID和AppSecret,这个相当于你公众号的秘钥,第二步需要用到。然后在JS接口安全域名中加入你调微信SDK时的页面的地址,不支持IP地址、端口号及短链域名,只能写域名,不用加http啥的,在设置了安全域名的路径下才能够成功调SDK。

第二步

需要一个获取签名的接口,这个可以找RD帮忙操作,请求接口的时候带上URL(必须和你当前的URL一致),然后让RD好好研读下如何通过公众号的AppID和AppSecret获取到token及签名等信息,接下来就可以愉快的调用微信的分享SDK了。

第三步

获取到签名之后在HTML中引入

<script typet="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

引入后在代码中调用分享SDK

window.wx.config({
    appId: res.data.appId, //res.data为请求签名接口返回数据
    timestamp: res.data.timestamp,
    nonceStr: res.data.nonceStr,
    signature: res.data.signature,
    jsApiList: [
      'checkJsApi',
      'updateAppMessageShareData',
      'updateTimelineShareData'
    ]
  });
  const shareConfig = {
    'imgUrl': '你想展现的图标',
    'desc': '你想展现的描述',
    'title': '你想展现的title',
    'link': window.location.href,
    'success': function () {
      console.log('成功了!');
    },
    'cancel': function () {
      console.log('取消');
    }
  };
  window.wx.ready(function () {
    window.wx.updateAppMessageShareData(shareConfig);
    window.wx.updateTimelineShareData(shareConfig);
  });

OK!大功告成,现在就可以按你的想法分享内容了,但是如何在本地测试是否成功呢?我们刚才也说了只能在安全域名下才能调用成功,所以Charles就派上大用场了。。。把安全域名代理到本地,然后可以在微信开发者工具上面自测一下,没问题了上真机,iOS和安装都要试一下,会有惊喜。

三、坑及总结

在自测了没问题之后上线了。。。结果发现iOS的手机获取签名失败,报invalid signature,后来排查发现在iOS的微信里面如果从其他页面跳转到你要分享的页面window.location.href是不会变的。。。也就是说你发请求去获取签名时候传给后端的URL和你当前的URL是不一致的,所以导致签名获取失败。这个解决办法很多,可以把前一个页面的URL拿去获取签名,只要保持一致就是OK的。

好了 先写这么多。。。

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

Javascript 相关文章推荐
javascript call和apply方法
Nov 24 Javascript
javascript中判断一个值是否在数组中并没有直接使用
Dec 17 Javascript
基于javascript实现彩票随机数生成(升级版)
Apr 17 Javascript
微信小程序 Storage API实例详解
Oct 02 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
使用ionic在首页新闻中应用到的跑马灯效果的实现方法
Feb 13 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
Mar 30 Javascript
JavaScript实现打地鼠小游戏
Apr 23 Javascript
vue.js实现备忘录功能的方法
Jul 10 Javascript
简单谈谈JS中的正则表达式
Sep 11 Javascript
Angular实现模版驱动表单的自定义校验功能(密码确认为例)
May 17 Javascript
vue循环数组改变点击文字的颜色
Oct 14 Javascript
微信小程序判断页面是否从其他页面返回的实例代码
Jul 03 #Javascript
8 个有用的JS技巧(推荐)
Jul 03 #Javascript
vue swipe自定义组件实现轮播效果
Jul 03 #Javascript
20个必会的JavaScript面试题(小结)
Jul 02 #Javascript
微信小程序如何调用新闻接口实现列表循环
Jul 02 #Javascript
Angular.JS读取数据库数据调用完整实例
Jul 02 #Javascript
js实现for循环跳过undefined值示例
Jul 02 #Javascript
You might like
在smarty中调用php内置函数的方法
2013/02/07 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
php制作圆形用户头像的实例_自定义封装类源代码
2017/09/18 PHP
详解php命令注入攻击
2019/04/06 PHP
【消息提示组件】,兼容IE6/7&amp;&amp;FF2
2007/09/04 Javascript
javascript插入样式实现代码
2012/02/22 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
判断复选框是否被选中的两种方法
2014/06/04 Javascript
js实现图片在未加载完成前显示加载中字样
2014/09/03 Javascript
node.js中的fs.mkdirSync方法使用说明
2014/12/17 Javascript
简单的JS时钟实例讲解
2016/01/13 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
使用layui实现的左侧菜单栏以及动态操作tab项方法
2019/09/10 Javascript
js实现无缝轮播图
2020/03/09 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
vue如何使用rem适配
2021/02/06 Vue.js
Python中关于使用模块的基础知识
2015/05/24 Python
Python算法应用实战之队列详解
2017/02/04 Python
Python中的id()函数指的什么
2017/10/17 Python
matplotlib subplots 调整子图间矩的实例
2018/05/25 Python
python基础知识(一)变量与简单数据类型详解
2019/04/17 Python
HTML5中的autofocus(自动聚焦)属性介绍
2014/04/23 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
优秀教师获奖感言
2014/01/31 职场文书
《夏夜多美》教学反思
2014/02/17 职场文书
车间主任岗位职责
2014/03/16 职场文书
工作粗心大意检讨书
2014/09/18 职场文书
预备党员转正材料
2014/12/19 职场文书
大雁塔英文导游词
2015/02/10 职场文书
应急管理工作总结2015
2015/05/04 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
大学运动会通讯稿
2015/07/18 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript