JSSDK实现自定义分享标题和图片
准备工作
-
已认证的公众号(一定要认证过的!)
在微信的官方文档常见错误及解决方法中,只有认证的公众号才具有分享相关接口权限 -
绑定JS域名
在 微信公众号 >> 功能设置 >> JS接口安全域名 中配置JS接口安全域名
将MP_verify_1PI6AnuQ7s0acvZv.txt(点击下载)放置在填写的域名目录下 -
添加IP白名单
在 微信公众号 >> 基本配置 >> IP白名单 中将访问微信接口的服务器的IP地址添加到白名单中 -
获取AppID和AppSecret
将获取的AppID和AppSecret保存
AppSecret一旦重置,将影响所有使用此AppID的应用,要慎重!
后端工作
参考微信官方文档JS-SDK使用权限签名算法
- 获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token)
curl "http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${secret}"
注意:curl测试时,url用“”,否则服务器不通 - 检查生成的签名
http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
获取生成签名所需参数
- appId + secret -------> ACCESS_TOKEN
- ACCESS_TOKEN -------> jsapi_ticket
// 1.获取access_token
app.get('/get_access_token', (req, res) => {
res.header("Access-Control-Allow-Origin",req.headers.origin); // 处理跨域
request.get({
url: `http://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${
appId}&secret=${
secret}`,
json: true,
}, (err, response, body) => {
console.log(body, 'token')
try {
if (err) {
res.json(err);
} else {
// 这里获取到ACCESS_TOKEN 传给getticket获取jsapi_ticket
res.send(body)
}
} catch (error) {
let data = {
"code": 500,
"message": "net error"
};
res.send(data);
LOG.error(req.method, req.url, '===========', error);
}
});
}