使用微信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实现的日期操作类DateTime函数代码
Mar 16 Javascript
JS实现点击按钮控制Div变宽、增高及调整背景色的方法
Aug 05 Javascript
javascript模拟C#格式化字符串
Aug 26 Javascript
jQuery实现的登录浮动框效果代码
Sep 26 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
Dec 28 Javascript
Vue.js组件通信的几种姿势
Oct 23 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
React 组件中的 bind(this)示例代码
Sep 16 Javascript
深入浅析javascript函数中with
Oct 28 Javascript
vue滚动固定顶部及修改样式的实例代码
May 30 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
vue 关闭浏览器窗口的时候,清空localStorage的数据示例
Nov 06 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
推荐:极酷右键菜单
2006/11/29 Javascript
服务器安全设置的几个注册表设置
2007/07/28 Javascript
豆瓣网的jquery代码实例
2008/06/15 Javascript
firefox下frameset取不到值的解决方法
2010/09/06 Javascript
js下将字符串当函数执行的方法
2011/07/13 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
现如今最流行的JavaScript代码规范
2014/03/08 Javascript
js选择并转移导航菜单示例代码
2014/08/19 Javascript
学习javascript面向对象 理解javascript对象
2016/01/04 Javascript
JavaScript必看小技巧(必看)
2016/06/07 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
修改npm全局安装模式的路径方法
2018/05/15 Javascript
js的新生代垃圾回收知识点总结
2019/08/22 Javascript
vue实现简单跑马灯效果
2020/05/25 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
深入理解Python 代码优化详解
2014/10/27 Python
Python脚本实现网卡流量监控
2015/02/14 Python
python文件操作相关知识点总结整理
2016/02/22 Python
python实现Decorator模式实例代码
2018/02/09 Python
python处理“
2019/06/10 Python
python实现windows倒计时锁屏功能
2019/07/30 Python
如何解决flask修改静态资源后缓存文件不能及时更改问题
2020/08/02 Python
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
测试工程师岗位职责
2013/11/28 职场文书
两只小狮子教学反思
2014/02/05 职场文书
幼儿园毕业园长感言
2014/02/24 职场文书
授权委托书范文
2014/07/31 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
同意离婚答辩状
2015/05/22 职场文书
个人收入证明范本
2015/06/12 职场文书
《火烧云》教学反思
2016/02/23 职场文书
面试中老生常谈的MySQL问答集锦夯实基础
2022/03/13 MySQL