H5微信自定义分享链接(设置标题+简介+图片)
起源:最近公司在做招募广告的html5页面,然后做出来后,产品提出一个问题,需要分享出去的链接是卡片形式,内容也要自己定义,这下就难到我了,因为是第一次遇到这种需求,果断百度,然而,我就像大家一样,看都看不懂,一大堆什么微信jssdk官方文档,看得我眼花缭乱,博客上面的也大多都是php形式的解释,也不知道怎么导入进来,然而接着去了解这个卡片分享,发现官方的分享卡片,是众多在微信生态中传播的html5静态页面的一个重点。所以我解决了这个问题之后,就来写这个博客,希望能帮助一些初步了解这个微信自定义分享链接的园友。
产品需要做的:
1.微信认证过的公众号:必须是经过认证的,没有认证的或者认证过期的都不可以;
2.经过备案的域名:必须是备案过的,不然是无法使用的;
3.绑定域名:首先你需要将需要分享的网址的域名绑定到微信公众平台上面,具体操作:先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”;
注:博主这次开发中,就遇到了第三点问题,我代码都写好了,后台也做好了,但是就是分享出去不是卡片形式

遇到 config:invalid url domain

后来发现是产品忘记绑定域名,设置白名单了。。。(域名不要加http://)

好,后来这个问题解决了,但是还是分享不成功,又进行一次排查,因为要在手机端上线才能看到效果,就一直上线一直改,改到下午5点,后来发现是产品appid给错了,我TM......
后台需要做的:
1.后台服务器:前台页面需要后台服务器传过来一些配置参数,比如appId、timestamp、nonceStr、signature这几个参数都是后台从微信公众平台获取到的, 需要后台进行配合;
2.获取access_token:利用公共号APPID、APPSECRET从微信服务器获取对应的access_token,这里是后台开发小伙伴的范围不多做解释;
后台需要传的参数格式:

前端你需要做的:
1.引入js文件 :在分享的页面需要引入一个微信官方的js文件;
<script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
2.通过ajax获取参数 :通过后台给你的接口,取到那些必要的参数,然后你需要把当前分享的页面的url传到后台去,必须动态的获取当前页面,而且一定要对url进行编码,要不然会不起作用;
3.因为重复上线你手机需要清理缓存,这又是一个麻烦事,手机打开:
debugx5.qq.com
然后滑到底部,有四个清理缓存的选择框,选择清理就好,不会影响别的地方的缓存,无需担心;
好,到这里就贴代码了,代码里面都特意详细的进行了注释:
$(function() {
//对url进行编码
var localUrl = encodeURIComponent(location.href.split('#')[0]);
//url传到后台格式
var Url = "URL=" +localUrl;
//这几个参数都是后台从微信公众平台获取到的
var nonceStr, signature, timestamp, appId, shareUrl;
$.ajax({
//后台获取参数接口
url: "https://www.xxxxxxx.cn/user/xxxxxxxx/",
beforeSend: function(xhr) {
xhr.setRequestHeader("Token", getCookie("token"));
},
type: 'get',
data: Url,
success: function(data) {
//得到参数
var appId = JSON.parse(data).appId;
var nonceStr = JSON.parse(data).nonceStr;
var signature = JSON.parse(data).signature;
var timestamp = JSON.parse(data).timestamp;
var shareUrl = JSON.parse(data).url;
//通过微信config接口注入配置
wx.config({
debug: false, // 默认为false 为true的时候是调试模式,会打印出日志
appId: appId,
timestamp: timestamp,
nonceStr: nonceStr,
signature: signature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo'
]
});
//配置自定义分享内容
window.share_config = {
'share': {
'imgUrl': 'https://www.xxxxxx.cn/cecerecruit/img/%E6%B5%8B%E6%B5%8B%E6%8B%9B%E5%8B%9F.png', // 这里是需要展示的图标
'desc': '120秒,48项天赋解析,90分钟专家咨询解读,深度剖析您的天赋人生。成为测测科技合伙人,尊享至多11项专属超值礼遇。', // 这是分享展示的摘要
'title': '90%的人都认可测测科技天赋智能测评|合伙人现正招募中', // 这是分享展示卡片的标题
'link': shareUrl, // 这里是分享的网址
'success': function(rr) {
//console.log('成功' + JSON.stringify(rr))
},
'cancel': function(tt) {
//console.log('失败' + JSON.stringify(tt));
}
}
};
wx.ready(function() {
wx.onMenuShareAppMessage(share_config.share); // 微信好友
wx.onMenuShareTimeline(share_config.share); // 微信朋友圈
wx.onMenuShareQQ(share_config.share); // QQ
});
},
error: function(err) {
},
});
})
提醒:手机端还在测试阶段,建议把debug改成true;然后博主做到这里,打包发给后台上线,然后惊喜的跳出config:OK;哇,那个惊喜若狂,然后果断分享一下去测试,然后如图:

大功告成。
总结:以后做这种事一定要耐心,发现问题要一步步去测试,只不过希望不要出现appid给错这种粗心大意的事了,最后,有问题留言,共同加油,共同进步。
H5微信自定义分享链接(设置标题+简介+图片)的更多相关文章
- ThinkPHP5集成JS-SDK实现微信自定义分享功能
最近开发一个项目,需要将链接分享给好友时能够自定义标题.简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文. 一.准备工作 1.认证的公众号 不管是订阅号还是服 ...
- Vue微信自定义分享时安卓系统config:ok,ios系统config:invalid signature签名错误,或者安卓和ios二次分享时均config:ok但是分享无效的解决办法
简述需求:要求指定页面可以进行微信自定义分享(自定义标题,描述,图片,链接),剩下的页面隐藏所有基础接口.二次分享依然可以正常使用,切换至其他页面也可以正常进行自定义分享. 这两天在做微信自定义分享的 ...
- 微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)
原文:微信JS-SDK"分享信息设置"API及数字签名生成方法(NodeJS版本) 先上测试地址以示成功: 用微信打开下面地址测试 http://game.4gshu.com/de ...
- 生成二维码、微信自定义分享到朋友圈、ipa不从应用商店安装
生成二维码网址:http://www.liantu.com/ 微信自定义分享到朋友圈:http://www.cnblogs.com/memor-y/p/6728179.html ipa不从应用商店安装 ...
- Next Cloud通过修改数据库表,达到替换文件而不改变分享的链接地址的效果,以及自定义分享链接地址
Next Cloud如何通过修改数据库表,达到替换文件而不改变分享的链接地址的效果,以及自定义分享的链接地址 本文首发于我的个人博客:https://chens.life/nextcloud-chan ...
- .NET微信自定义分享标题、缩略图、超链接及描述的设置方法
前端Js引用: <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> ...
- 微信内 H5 页面自定义分享
起源: 最近公司在做一个活动的h5页面,在微信内打开时需要进行微信授权,然后后端会重定向到这个页面并且携带了一些参数(openid等).问题是点击微信的原生分享时,会把携带的这些参数一起分享出去,等于 ...
- H5页面分享微信自定义分享title和img
前端开发H5 需分享到朋友圈和发给好友,想自定义分享的title和图表还有简短一句话,还需调用微信的api 首先需获取到微信的appId,timestamp,nonceStr,signature 微信 ...
- 微信公众号h5页面自定义分享
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
随机推荐
- .Net C# 阿拉伯数字转为中文金额数字
一个练习,将阿拉伯数字转为中文金额数字,针对包含整数的金额有问题 代码: public string ReturnStr(string inputNum) { ", }; string[] ...
- 流与文本文件操作(C#)
1.流的基本概念 流是任何输入输出库的必不可少的组成部分.当你的程序需要从一个外部数据源(比如,files.other PCs或servers等)读或者写数据时,就需要用到流streams. 流是由一 ...
- javacript 实现瀑布流原理和效果, 滚动加载图片【图文解析 附源码】
先科普下瀑布流吧 瀑布流,又称瀑布流式布局.是比较流行的一种网站页面布局,视觉表现为参差不齐的多栏布局,随着页面滚动条向下滚动,这种布局还会不断加载数据块并附加至当前尾部.最早采用此布局的网站是Pin ...
- 一次mysql调优过程
由于经常被抓取文章内容,在此附上博客文章网址:,偶尔会更新某些出错的数据或文字,建议到我博客地址 : --> 点击这里 前几天进行了一个数据库查询,比较缓慢,便查询了一下,在这里记录一下,方便 ...
- 关于OI中简单的常数优化
有些东西借鉴了这里qwq 1.IO(istream/ostream) 输入输出优化 之后能,在赛场上常见的几种输入输出: 输入: $1.cin$ 呵呵,不说什么了,慢的要死.大概$1e8$个数要读1分 ...
- 从【BZOJ4173】谈做题技巧
题目描述 ----------------------------------------------------------------------------------------------- ...
- acedSSSetFirst选择集夹点亮显实例
ads_name ss; //执行预选 好像可以无视PICKSTYLE变量 if (RTNORM != acedSSGet(_T("I"),NULL,NULL,NULL,ss)) ...
- 字符串模式匹配算法1 - BF和KMP算法
在字符串S中定位/查找某个子字符串P的操作,通常称为字符串的模式匹配,其中P称为模式串.模式匹配有多种算法,这里先总结一下BF算法和KMP算法. 注意:本文在讨论字符位置/指针/下标时,全部使用C语法 ...
- 安卓monkey自动化测试,软硬回车
1.Monkey程序介绍 在android手机上做自动化测试,monkey比cts,Android UnitTest 好用多了,他其实是继承与adb shell中的一段的shell指令. monkey ...
- java 实用Util汇总
1.Util介绍 Util是工具的意思,一般来说,常常用来描述和业务逻辑没有关系的数据处理. Util一般要和私有方法对比:私有方法一般来说是只是在特地场景下使用的,私有方法越多,代码结构越乱.常见的 ...