H5卡片分享
一、常规通用分享配置(Open Graph 协议)
适用于大多数社交平台(微信、QQ、微博、Facebook等)的基础分享信息识别,通过 <meta> 标签定义分享标题、链接、图片和描述。
1 | |
注意:
- 图片链接需为有效 HTTPS 地址,避免解析失败(如示例中的
http://example.com/image.jpg需替换为真实可访问图片);- 图片尺寸建议:微信推荐 300x300 像素,QQ 推荐 200x200 像素以上。
二、微信分享转发配置
1. 前置准备
- 微信公众平台配置:登录 微信公众平台,在“开发 - 开发管理 - 开发设置”中配置 JS接口安全域名(需与分享页面域名一致);
- 引入微信 JS-SDK:
1
2<!-- 建议使用最新版 SDK,示例为 1.6.0(兼容旧版 API) -->
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
2. 服务端鉴权流程(核心)
前端需通过服务端获取鉴权信息(appId、timestamp、nonceStr、signature),步骤如下:
步骤1:获取 access_token
服务端调用微信接口:
1 | |
- 返回示例:
{"access_token":"ACCESS_TOKEN","expires_in":7200} - 注意:
access_token有效期 2 小时,需服务端缓存(避免频繁调用)。
步骤2:获取 jsapi_ticket
用 access_token 调用微信接口:
1 | |
- 返回示例:
{"errcode":0,"errmsg":"ok","ticket":"TICKET","expires_in":7200} - 注意:
jsapi_ticket有效期 2 小时,需服务端缓存。
步骤3:生成签名
服务端按以下规则生成签名:
- 生成随机字符串
noncestr和时间戳timestamp; - 获取当前页面 URL(不含
#及后面部分,需动态获取); - 将
jsapi_ticket、noncestr、timestamp、url按字典序排序,拼接成字符串; - 对拼接后的字符串进行
sha1加密,得到signature。
Node.js 服务端示例代码:
1 | |
3. 前端配置与分享设置
(1)新版推荐 API(微信 JS-SDK 1.4.0+)
1 | |
(2)旧版兼容 API(仍可使用,推荐优先用新版)
若需兼容旧版 SDK,可保留以下 API:
1 | |
三、钉钉分享配置
1. 前置准备
- 登录 钉钉开放平台,创建应用并配置 JSAPI 安全域名;
- 引入钉钉 JS-SDK:
1
<script src="https://g.alicdn.com/dingding/h5-dingtalk-sdk/1.0.0/dd.js"></script>
2. 前端配置示例
1 | |
四、QQ 分享配置
1. 方式一:Meta 标签(简单,无需 JS)
1 | |
2. 方式二:QQ JS-SDK(需申请应用)
- 登录 QQ 互联开放平台,创建应用并获取
appId; - 引入 QQ JS-SDK 并配置:
1
2
3
4
5
6
7
8
9
10
11<script src="https://qzonestyle.gtimg.cn/qzone/qzact/common/share/share.js"></script>
<script>
function initQQShare() {
setShareInfo({
title: '分享标题',
summary: '分享描述',
url: location.href,
pic: 'https://www.example.com/share.jpg'
});
}
</script>
五、注意事项
- 域名配置:所有平台均需在对应开放平台配置 JS 接口安全域名,否则分享功能无法使用;
- 图片要求:
- 图片需为 HTTPS 地址,大小不超过 300KB;
- 尺寸建议:正方形(300x300 像素),避免被平台裁剪;
- URL 处理:分享链接需与页面域名一致,单页应用需动态获取当前 URL(不含
#后内容); - 调试技巧:微信分享可在
wx.config中设置debug: true,通过弹窗查看配置结果; - 服务端缓存:
access_token和jsapi_ticket需服务端缓存(有效期 2 小时),避免频繁调用微信接口导致限流。
参考资料
H5卡片分享
https://cszy.top/20220429-H5卡片分享/