首页 新闻 会员 周边 捐助

js调用微信JS-SDK的问题:ajax获取权限验证配置

0
悬赏园豆:200 [已解决问题] 解决于 2020-10-13 18:27

下面的代码在通过 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 已经正确传参

请问如何解决这个问题?

dudu的主页 dudu | 高人七级 | 园豆:29732
提问于:2020-10-13 14:10
< >
分享
最佳答案
1

设置成功之后有个回调, 在success 里 alert() 一下,看是否设置成功

wx.ready(function () {   //需在用户可能点击分享按钮前就先调用
  wx.updateAppMessageShareData({ 
    title: '', // 分享标题
    desc: '', // 分享描述
    link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl: '', // 分享图标
    success: function () {
      // 在这里打印一下,看是否设置成功了
    }
  })
});
收获园豆:200
电磁魔王喵喵 | 小虾三级 |园豆:1343 | 2020-10-13 14:40

也可能是 wx.config 的签名验证失败了,增加这个查看一下

wx.error(function(res){
  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});
电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 15:28

签名的生成规则里需要 ,当前页面的URL , url(当前网页的URL,不包含#及其后面部分)
/ajax/wechatshare/getconfig 这个接口没有提交当前页的 url

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 15:57

wx.updateAppMessageShareData 的 success 与 fail 回调都没执行

dudu | 园豆:29732 (高人七级) | 2020-10-13 16:18

@dudu: wx.config 的签名验证有成功吗

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 16:27

@dudu: config信息验证成功后才会执行 wx.ready,失败会执行 wx.error

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 16:31

@电磁魔王喵喵: wx.ready 执行了, wx.error 没执行,签名没问题

dudu | 园豆:29732 (高人七级) | 2020-10-13 16:39

@dudu: 服务端是如何拿到 当前页面的url的?似乎没有提交这个信息

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 16:46

@dudu: 看了下那个页面的代码,wx.error 是跟 wx.ready 同级的,不要把wx.error 写在 wx.ready里面

电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 16:56
wx.config(config);
wx.error(function(res){});
wx.ready(function(){});
电磁魔王喵喵 | 园豆:1343 (小虾三级) | 2020-10-13 16:59

@电磁魔王喵喵: 汗,我知道wx.error不应该写在wx.ready里面,但还真的写在了里面

dudu | 园豆:29732 (高人七级) | 2020-10-13 17:10

@电磁魔王喵喵: 就是url不一致引起的,生成签名是根据当前请求的url,而 $.getJSON('/ajax/wechatshare/getconfig') 请求的url是当前ajax请求的url,不是当前分享的博文的url

服务端是如何拿到 当前页面的url的?似乎没有提交这个信息

只要在请求时将当前博文url传参给 /ajax/wechatshare/getconfig ,使用这个url生成签名,问题就解决了。

dudu | 园豆:29732 (高人七级) | 2020-10-13 18:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册