.NET 微信开发 JSSDK配置 wx.config调用 invalid signature签名错误分析

官方文档 要认真看一遍之后,开始搞

JSSDK是网页调用微信功能的配置文件。在这里浪费了大量时间  所以记录一下。(吐槽下微信返回的错误信息,也是没谁了。。。)

页面先配置一下。注释里几个参数,可以用ajax会获取。

<script type="text/javascript">
    wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: ‘@ViewBag.AppID‘, // 必填,公众号的唯一标识
        timestamp: @ViewBag.timestamp, // 必填,生成签名的时间戳    <%= Html.Encode(ViewData["timestamp" ]) %>
        nonceStr: ‘@ViewBag.nonceStr‘, // 必填,生成签名的随机串
        signature: ‘@ViewBag.signature‘, // 必填,签名
        jsApiList: [‘scanQRCode‘] // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
    });

    $(function() {
        //console.log(location.href);
        //alert(location.href.split(‘#‘)[0]);

        $(".btnsis").click(function() {
            alert(‘ee‘);
            var ua = navigator.userAgent.toLowerCase();
            var isWeixin = ua.indexOf(‘micromessenger‘) !== -1;
            if (!isWeixin) {
                alert(‘请用微信打开连接,才可使用扫一扫‘);
            }
            qrCode();
        });

        function qrCode() {
            wx.scanQRCode({
                needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有
                success: function (res) {
                    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                    alert(result);
                },
                error:function(res) {
                    if (res.errMsg.indexOf(‘function_not_exist‘) > 0) {
                        alert(‘当前版本过低,请进行升级‘);
                    }
                }
            });
        }
    });

</script>

官方常见错误处理方式:

invalid signature签名错误。建议按如下顺序检查:

  1. 确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。
  2. 确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致。
  3. 确认url是页面完整的url(请在当前页面alert(location.href.split(‘#‘)[0])确认),包括‘http(s)://‘部分,以及‘?‘后面的GET参数部分,但不包括‘#‘hash后面的部分。
  4. 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。
  5. 确保一定缓存access_token和jsapi_ticket。
  6. 确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去‘#‘hash部分的链接(可用location.href.split(‘#‘)[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。

个人有关错误经验整理:

1.时间戳与签名是对应的,用同一时间,不能timestamp用了 datetime.now,签名(signature)不能再重新取了 datetime.now。会造成签名错误(可能时而正确,时而错误的情况)

http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign验证签名算法正确之后,还是出现错误:

2.前端wx.config里的  nonceStr, 这个S是大写的,这个坑了很多开发者

3.appid保持一致,正式appid与测试appid可能会搞混淆的,打日志看一下。

4. 注意请求参数,不要写错了

调用文章,参考链接:https://www.cnblogs.com/cr-cool/p/10959974.html

原文地址:https://www.cnblogs.com/cr-cool/p/12597667.html

时间: 2024-12-17 16:27:38

.NET 微信开发 JSSDK配置 wx.config调用 invalid signature签名错误分析的相关文章

微信企业号 jsSDK wx.config报invalid signature错误,导致api接口无法使用

最近在做公司定制化的时候发现一个问题,使用微信的语音API的时候微信报错,错误信息为:the permission value is offline verifying 但是诡异的是:同样的代码在我们公司的产品上就不会报这个错误,可以正确调用接口.但是放在客户的服务器上,wx.config里面的参数配置成客户微信企业号信息就会报错. 通过查询发现,微信JS-SDK的附录5已经说明了这个问题可能存在的原因 通过排查,发现23没有问题,所以将焦点放在了第一个. 通过微信提供的web调试工具发现wx.

微信开发配置JSSDK,注入权限验证,以及invalid signature签名错误解决

在微信开发中很多功能都要用到微信JSSDK,关于JSSDK的使用,微信官方的文档已经比较详细,一定要仔细去看文档. <script src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script> 我们先进入微信SDK的JS文件.在页面中使用ajax注入权限验证,关于后台的验证以及签名算法,官方文档写的很详细,也有demo可以查看. $(function(){ //var url = window.lo

微信jssdk config:invalid signature 签名错误 ,问题排查过程

invalid signature签名错误.建议按如下顺序检查: 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 确认config中noncestr, timestamp与用以签名中的对应noncestr, timestamp一致. 确认url是页面完整的url,包括GET参数部分. 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致. 确

vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 &quot;invalid signature&quot;错误解决方案

项目背景 vue-cli生成的单页面项目,router使用history模式.产品会在公众号内使用,需要添加微信JSSDK,做分享相关配置. 遇到的问题 相关配置与JS接口安全域名都已经ok,发布后,pc端微信开发者工具与Android手机 内测试分享都没问题,无论怎么跳转再分享也没问题.IOS 手机,首次到页面分享没问题,但是跳转后,就会报invalid signature 签名错误. 就是说 从 [http://aaa.com/index] 跳到 [http://aaa.com/detail

微信网页分享 jssdk config:invalid signature 签名错误

invalid signature签名错误.建议按如下顺序检查: 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 确认config中noncestr, timestamp与用以签名中的对应noncestr, timestamp一致. 确认url是页面完整的url,包括GET参数部分. 确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致. 确

微信-js sdk invalid signature签名错误 问题解决

如果出现 invalid signature,首先可以确定的是你的签名算法有问题.建议:首先查看微信官方网站给出的解决方案,链接为: http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 1. invalid signature签名错误 建议按如下顺序检查: 确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验

微信JSAPI分享朋友圈调试经验:invalid signature签名错误排查

.invalid signature签名错误.建议按如下顺序检查: 1.确认签名算法正确,可用http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验. 2.确认config中nonceStr(js中驼峰标准大写S), timestamp与用以签名中的对应noncestr, timestamp一致. 3.确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),

微信开发-Jssdk调用分享实例

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using Newtonsoft.Json; using System.Net; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Security.Cryptography

微信开发——前期配置

本文讲前端如何独立的进行微信开发(没有搭建后台,如何通过config接口注入权限验证配置). 1.申请微信公众号成功后,进入微信公众平台(https://mp.weixin.qq.com/),登录. 2.在开发者工具中选择公众平台测试账号,点击进入,微信扫码授权登录. 3.进入测试号页面,得到测试号信息: 4.完成JS-SDK使用权限签名算法. 首先获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):打开链接https://api.weixi