下面的代码在通过 ajax 请求获取调用微信api的权限验证配置,然后调用 JS-SDK 设置微信分享的内容,但分享到微信后依然没有显示期望的摘要与图片
$.getScript('https://res.wx.qq.com/open/js/jweixin-1.6.0.js', function () {
$.getJSON('/ajax/wechatshare/getconfig')
.done(function (config) {
wx.config(config);
wx.ready(function () {
wx.updateAppMessageShareData({
title: document.title,
desc: metaDesc.content,
link: location.href,
imgUrl: imgUrl
});
wx.updateTimelineShareData({
title: document.title,
link: location.href,
imgUrl: imgUrl
});
});
});
});
浏览器控制台显示 updateAppMessageShareData
已经正确传参
请问如何解决这个问题?
设置成功之后有个回调, 在success 里 alert() 一下,看是否设置成功
wx.ready(function () { //需在用户可能点击分享按钮前就先调用
wx.updateAppMessageShareData({
title: '', // 分享标题
desc: '', // 分享描述
link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
imgUrl: '', // 分享图标
success: function () {
// 在这里打印一下,看是否设置成功了
}
})
});
也可能是 wx.config 的签名验证失败了,增加这个查看一下
wx.error(function(res){
// config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
签名的生成规则里需要 ,当前页面的URL , url(当前网页的URL,不包含#及其后面部分)
/ajax/wechatshare/getconfig 这个接口没有提交当前页的 url
wx.updateAppMessageShareData
的 success 与 fail 回调都没执行
@dudu: wx.config 的签名验证有成功吗
@dudu: config信息验证成功后才会执行 wx.ready,失败会执行 wx.error
@电磁魔王喵喵: wx.ready
执行了, wx.error
没执行,签名没问题
@dudu: 服务端是如何拿到 当前页面的url的?似乎没有提交这个信息
@dudu: 看了下那个页面的代码,wx.error 是跟 wx.ready 同级的,不要把wx.error 写在 wx.ready里面
wx.config(config);
wx.error(function(res){});
wx.ready(function(){});
@电磁魔王喵喵: 汗,我知道wx.error不应该写在wx.ready里面,但还真的写在了里面
@电磁魔王喵喵: 就是url不一致引起的,生成签名是根据当前请求的url,而 $.getJSON('/ajax/wechatshare/getconfig')
请求的url是当前ajax请求的url,不是当前分享的博文的url
服务端是如何拿到 当前页面的url的?似乎没有提交这个信息
只要在请求时将当前博文url传参给 /ajax/wechatshare/getconfig
,使用这个url生成签名,问题就解决了。