H5 在微信里能做什么
公众号文章里跳的 H5、活动页、营销页,只要在微信里打开,就能通过 JS-SDK 调起微信原生能力:分享、扫一扫、定位、图片预览。配合网页授权,还能拿到用户的 openid,识别是谁在访问。
JS-SDK 让 H5 从普通网页变成半个小程序。
HS5 签名与网页授权是两回事:签名让 JS-SDK 能用,授权让后端认得出用户。别把 ticket 和 access_token 混在一起,各自缓存各自的失效时间。
- JS-SDK调起微信原生接口。
- 网页授权拿 openid 与昵称。
JS-SDK 签名流程
每个调用 JS-SDK 的页面,都要先在后端用 ticket 加当前 URL 算出签名,再由前端 wx.config 注入。签名必须在页面加载前算好,URL 不能带多余 hash。ticket 有有效期,后端要缓存。
// 后端伪代码:用 jsapi_ticket + url 生成签名
const sign = { nonceStr, timestamp, url, signature };
// 前端
wx.config({ debug:false, appId, timestamp, nonceStr, signature, jsApiList:['updateAppMessageShareData'] });
网页授权拿 openid
用户第一次访问 H5,没登录态时跳到微信授权页,用户同意后微信回跳带回 code。后端拿 code 换 openid 与 access_token。拿到 openid 就能关联用户身份。静默授权拿 openid,显式授权再拿昵称头像。
常见能力调用
自定义分享卡片、扫一扫、地理位置、图片预览,都是 JS-SDK 常见调用。分享接口要在 wx.ready 里设置,否则用户点分享时卡片是空的。
安全与域名配置
公众号后台要配 JS 安全域名、网页授权域名。域名必须 ICP 备案、HTTPS。签名 ticket 不能放前端,放后端。这两件事配错,所有调用都失败。
HS5 签名与网页授权是两回事:签名让 JS-SDK 能用,授权让后端认得出用户。别把 ticket 和 access_token 混在一起,各自缓存各自的失效时间。
- ticket后端缓存。
- 签名URL 不带 hash。
- 域名后台配好。
- 分享在 ready 里设。
常见坑
最常见:iOS 下 URL 用的是首次进入的 URL,单页跳转后签名失效。解决是路由切换后重新签名,或者固定入口 URL。其次是分享没在 ready 里设,卡片是默认标题。
小结与延伸阅读
JS-SDK 加网页授权,让 H5 在微信里有了原生能力和用户身份。把签名流程和域名配置做扎实,H5 活动页就能跑起来。
- 公众号运营读《公众号内容运营与生态实战》。
- 小程序插件读《小程序插件开发实战》。
- 开放平台读《微信开放平台与第三方平台开发实战》。