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

haihai1017
  • 9

最近做微信订阅号,调用微信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('发生错误了,请稍后重试!');
        }
    }
});
回复
阅读 4.4k
1 个回答

这个问题一般是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]"; 
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏