微信公众号 JS SDK config 自定义菜单回调 分享功能 一直提示签名错误,求指教

发布于 2022-09-04 10:59:19 字数 2795 浏览 15 评论 0

最近做微信订阅号,调用微信JS-SDK功能自定义分享标题和内容,在使用JS-SDK的时候,通过config接口注入权限验证配置时手机端一直报invalid signature签名错误。在PC端使用微信客户端分享没有错误。

使用微信官方的签名校验:
http://mp.weixin.qq.com/debug...
签名结果一致。

用微信官方webcaht开发工具调试也正确:

如果自定义菜单中采用直接的网页地址www.baidu.com/ranking可以签名通过,
但是带授权的回调地址就失败
https://open.weixin.qq.com/co...

请各位大神帮忙下,谢谢!!

以下是js代码调用:

var queryAjax=$.ajax({
    type : "POST",
    url : "/XXXX/shareconfig",
    async : true,
    timeout : 5000, // 超时时间设置,单位毫秒
    data:{
            requrl:window.location.href.split('#')[0]
        },
    contentType: "application/json; charset=utf-8",
    dataType : "json",
    success : function(data){
        app_Id=data.appId;
        time_stamp=data.timestamp;
        nonce_Str=data.nonceStr;
        signature_0=data.signature;

        wx.config({
            debug: true, 
            appId: app_Id,
            timestamp: time_stamp, 
            nonceStr: nonce_Str, 
            signature: signature_0,
            jsApiList: ['checkJsApi','onMenuShareTimeline','onMenuShareAppMessage']
        });
        wx.ready(function() {
            wx.checkJsApi({
                jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'], 
                success: function(res) {
                    // 以键值对的形式返回,可用的api值true,不可用为false
                    alert('checkapi:'+JSON.stringify(res));
                }
            });

            wx.onMenuShareAppMessage({
                title: '30天热销榜', 
                desc: '排名榜单', 
                link: window.location.href, 
                imgUrl: '/images/QRcode.png',
                type: 'link', 
                dataUrl: '', 
                trigger: function (res) {
                    alert('用户点击分享到朋友圈');
                },
                success: function (res) {
                    alert('已分享');
                },
                cancel: function (res) {
                    alert('已取消');
                },
                fail: function (res) {
                    alert('wx.onMenuShareTimeline:fail: '+JSON.stringify(res));
                }
            });
        });
        wx.error(function(res){     
            alert('wx.error:'+JSON.stringify(res));
        });

    },
    complete : function(XMLHttpRequest, status) {
        if (status == 'timeout') {
            queryAjax.abort();
            alert('请求超时,请稍后重试!');
        } else if (status == 'error') {
            alert('发生错误了,请稍后重试!');
        }
    }
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

仅一夜美梦 2022-09-11 10:59:19

这个问题一般是url的错误,微信获取的url 与你实际页面的URL不一致,你可以看看你配置的url,
你实际的url 可以使用

// 注意 URL 一定要动态获取,不能 hardcode.
    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]"; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文