使用微信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 词法作用域和闭包分析说明
Aug 12 Javascript
原生javascript兼容性测试实例
Jul 01 Javascript
JavaScript极简入门教程(三):数组
Oct 25 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
May 05 Javascript
使用JS读取XML文件的方法
Nov 25 Javascript
深入理解jquery中extend的实现
Dec 22 Javascript
Javascript中构造函数要注意的一些坑
Jan 23 Javascript
npm全局模块卸载及默认安装目录修改方法
May 15 Javascript
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
Vue中的methods、watch、computed的区别
Nov 26 Javascript
详解vue组件中使用路由方法
Feb 12 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
晋城吧对DiscuzX进行的前端优化要点
2010/09/05 PHP
php 批量替换程序的具体实现代码
2013/10/04 PHP
CI框架学习笔记(二) -入口文件index.php
2014/10/27 PHP
PHP实现的sqlite数据库连接类
2014/12/12 PHP
ThinkPHP3.2.3数据库设置新特性
2015/03/05 PHP
php字符串函数学习之substr()
2015/03/27 PHP
PHP Reflection API详解
2015/05/12 PHP
Javascript数组的排序 sort()方法和reverse()方法
2012/06/04 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
javascript中利用柯里化函数实现bind方法【推荐】
2016/04/29 Javascript
js实现移动端轮播图
2020/12/21 Javascript
vuex 动态注册方法 registerModule的实现
2019/07/03 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
python中循环语句while用法实例
2015/05/16 Python
解决Python requests 报错方法集锦
2017/03/19 Python
对python 矩阵转置transpose的实例讲解
2018/04/17 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
Django中使用Celery的教程详解
2018/08/24 Python
利用python循环创建多个文件的方法
2018/10/25 Python
python简单贪吃蛇开发
2019/01/28 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Python-接口开发入门解析
2019/08/01 Python
python模拟实现斗地主发牌
2020/01/07 Python
Python ckeditor富文本编辑器代码实例解析
2020/06/22 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
香港交友网站:be2香港
2018/07/22 全球购物
数控技术应届生求职信
2013/11/13 职场文书
餐厅总经理岗位职责
2013/12/31 职场文书
关于期中考试的反思
2014/02/02 职场文书
工艺员岗位职责
2014/02/11 职场文书
《飞向蓝天的恐龙》教学反思
2014/04/09 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
关于python爬虫应用urllib库作用分析
2021/09/04 Python