使用微信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 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
js 图片轮播(5张图片)
Dec 30 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
May 06 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
Aug 10 Javascript
学习JavaScript设计模式(多态)
Nov 25 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
关于JavaScript限制字数的输入框的那些事
Aug 14 Javascript
浅析Javascript的自动分号插入(ASI)机制
Sep 29 Javascript
angularjs ocLazyLoad分步加载js文件实例
Jan 17 Javascript
jQuery日程管理控件glDatePicker用法详解
Mar 29 jQuery
javascript 构建模块化开发过程解析
Sep 11 Javascript
layui监听单元格编辑前后交互的例子
Sep 16 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数组对比函数,存在交集则返回真,否则返回假
2011/02/03 PHP
php学习之数据类型之间的转换介绍
2011/06/09 PHP
PHP生成RSS文件类实例
2014/12/05 PHP
PHP实现递归无限级分类
2015/10/22 PHP
php原生导出excel文件的两种方法(推荐)
2016/11/19 PHP
php创建图像具体步骤
2017/03/13 PHP
php微信公众号开发之快递查询
2018/10/20 PHP
JavaScript的Cookies
2008/01/16 Javascript
ext 代码生成器
2009/08/07 Javascript
基于JQuery的asp.net树实现代码
2010/11/30 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
在多个页面使用同一个HTML片段的代码
2011/03/04 Javascript
javascript向后台传送相同属性的参数即数组参数
2014/02/17 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JavaScript Promise启示录
2014/08/12 Javascript
javascript修改图片src的方法
2015/01/27 Javascript
jquery使用animate方法实现控制元素移动
2015/03/27 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
vue引用外部JS的两种种方法
2020/01/28 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
零基础写python爬虫之神器正则表达式
2014/11/06 Python
Python中多线程及程序锁浅析
2015/01/21 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python日志无延迟实时写入的示例
2019/07/11 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
在django中form的label和verbose name的区别说明
2020/05/20 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
企业党的群众路线教育实践活动学习心得体会
2014/10/31 职场文书
政审证明材料
2015/06/19 职场文书
Mysql中where与on的区别及何时使用详析
2021/08/04 MySQL
Golang 实现 WebSockets 之创建 WebSockets
2022/04/24 Golang
mysql查看表结构的三种方法总结
2022/07/07 MySQL