使用微信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 相关文章推荐
js类 from qq
Nov 13 Javascript
网页中实现浏览器的最大,最小化和关闭按钮
Mar 12 Javascript
解析使用JS 清空File控件的路径值
Jul 08 Javascript
javascript委托(Delegate)blur和focus用法实例分析
May 26 Javascript
基于zepto的移动端轻量级日期插件--date_picker
Mar 04 Javascript
基于Vue2.0的分页组件
Mar 16 Javascript
js脚本编写简单刷票投票系统
Jun 27 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 Javascript
layui使用form表单实现post请求页面跳转的方法
Sep 14 Javascript
Nuxt v-bind绑定img src不显示的解决
Dec 05 Javascript
微信小程序的引导页实现代码
Jun 24 Javascript
详解Vue数据驱动原理
Nov 17 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仿ZOL分页类代码
2008/10/02 PHP
PHP中break及continue两个流程控制指令区别分析
2011/04/18 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
php ios推送(代码)
2013/07/01 PHP
php连接oracle数据库的方法(测试成功)
2016/05/26 PHP
js对象的构造和继承实现代码
2010/12/05 Javascript
基于jquery的3d效果实现代码
2011/03/23 Javascript
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
利用百度地图JSAPI生成h7n9禽流感分布图实现代码
2013/04/15 Javascript
页面刷新时记住滚动条的位置jquery代码
2014/06/17 Javascript
javaScript中push函数用法实例分析
2015/06/08 Javascript
JavaScript的Vue.js库入门学习教程
2016/05/23 Javascript
基于JavaScript实现鼠标箭头移动图片跟着移动
2016/08/30 Javascript
javascript简易画板开发
2020/04/12 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
Python socket.error: [Errno 98] Address already in use的原因和解决方法
2014/08/25 Python
python简单分割文件的方法
2015/07/30 Python
python中reader的next用法
2018/07/24 Python
influx+grafana自定义python采集数据和一些坑的总结
2018/09/17 Python
Python参数类型以及常见的坑详解
2019/07/08 Python
python多线程同步实例教程
2019/08/11 Python
Python with语句用法原理详解
2020/07/03 Python
使用Python文件读写,自定义分隔符(custom delimiter)
2020/07/05 Python
Python如何读取、写入CSV数据
2020/07/28 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
中间件分为哪几类
2016/09/18 面试题
计算机网络专业个人的自我评价
2013/10/17 职场文书
项目技术负责人岗位职责
2015/04/13 职场文书
详解Python函数print用法
2021/06/18 Python