使用微信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 相关文章推荐
wordpress之js库集合研究介绍
Aug 17 Javascript
改写一个简单的菜单 弹性大小
Dec 02 Javascript
JavaScript中为什么null==0为false而null大于=0为true(个人研究)
Sep 16 Javascript
javascript中expression的用法整理
May 13 Javascript
js实现卡片式项目管理界面UI设计效果
Dec 08 Javascript
javascript 中的事件委托详解
Oct 25 Javascript
AngularJS中directive指令使用之事件绑定与指令交互用法示例
Nov 22 Javascript
详述 Sublime Text 打开 GBK 格式中文乱码的解决方法
Oct 26 Javascript
bootstrap table sum总数量统计实现方法
Oct 29 Javascript
Vue.js递归组件实现组织架构树和选人功能案例分析
Jul 03 Javascript
JavaScript代码异常监控实现过程详解
Feb 17 Javascript
微信小程序后端实现授权登录
Feb 24 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
php网页后退不再出现过期
2007/03/08 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
php四种基础算法代码实例
2013/10/29 PHP
destoon后台网站设置变成空白的解决方法
2014/06/21 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
thinkPHP5.0框架模块设计详解
2017/03/18 PHP
(推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib
2007/04/29 Javascript
用box固定长宽实现图片自动轮播js代码
2014/06/09 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
js代码验证手机号码和电话号码是否合法
2015/07/30 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
2016/01/27 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
详解RequireJS按需加载样式文件
2017/04/12 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
Vue封装Swiper实现图片轮播效果
2018/02/06 Javascript
jQuery实现获取form表单内容及绑定数据到form表单操作分析
2018/07/03 jQuery
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
简单介绍Ruby中的CGI编程
2015/04/10 Python
python使用Queue在多个子进程间交换数据的方法
2015/04/18 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
Python数据类型详解(二)列表
2016/05/08 Python
Python中格式化format()方法详解
2017/04/01 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
Python解决pip install时出现的Could not fetch URL问题
2019/08/01 Python
python集成开发环境配置(pycharm)
2020/02/14 Python
python 的topk算法实例
2020/04/02 Python
英国家居装饰品、户外家具和玻璃器皿购物网站:Rinkit.com
2019/11/04 全球购物
第一批党的群众路线教育实践活动工作总结
2014/03/03 职场文书
教师政风行风评议心得体会
2014/10/21 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书
开幕式邀请函
2015/01/31 职场文书
开学随笔
2015/08/15 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
试用1103暨1103、1101同门大比武 [ DAIWEI ]
2022/04/05 无线电