使用微信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中的一些注意事项 更新中
Dec 06 Javascript
js onload事件不起作用示例分析
Oct 09 Javascript
JavaScript移除数组内重复元素的方法
Mar 18 Javascript
Javascript实现计算个人所得税
May 10 Javascript
小议JavaScript中Generator和Iterator的使用
Jul 29 Javascript
js与jquery分别实现tab标签页功能的方法
Nov 18 Javascript
AngularJS中指令的四种基本形式实例分析
Nov 22 Javascript
浅谈jQuery中事情的动态绑定
Feb 12 Javascript
vue中使用ueditor富文本编辑器
Feb 08 Javascript
细述Javascript的加法运算符的具体使用
Oct 18 Javascript
原生JS与CSS实现软件卸载对话框功能
Dec 05 Javascript
javascript实现蒙版与禁止页面滚动
Jan 11 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
解决中英文字符串长度问题函数
2007/01/16 PHP
php入门学习知识点七 PHP函数的基本应用
2011/07/14 PHP
php使用PDO方法详解
2014/12/27 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
List the Codec Files on a Computer
2007/06/11 Javascript
javascript写的日历类(基于pj)
2010/12/28 Javascript
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
理清apply(),call()的区别和关系
2011/08/14 Javascript
文本框水印提示效果的简单实现代码
2014/02/22 Javascript
select多选 multiple的使用示例
2014/06/16 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
jQuery unbind()方法实例详解
2016/01/19 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
JavaScript实现简单的星星评分效果
2017/05/18 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
JS数组实现分类统计实例代码
2018/09/30 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
vue Tab切换以及缓存页面处理的几种方式
2019/11/05 Javascript
Vue实现剪切板图片压缩功能
2020/02/04 Javascript
javascript中可能用得到的全部的排序算法
2020/03/05 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
布同自制Python函数帮助查询小工具
2011/03/13 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
Python3利用print输出带颜色的彩色字体示例代码
2019/04/08 Python
实例代码讲解Python 线程池
2020/08/24 Python
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
百年孤独读书笔记
2015/06/29 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS
mysql全面解析json/数组
2022/07/07 MySQL