错误情况概述:

启动应用之后,微信调用 相机拍照 等接口是可以正常使用的, 但是过了一段时间(2个小时左右--token/jsapi_ticket的过期时间),微信调用相机拍照的功能失效,启用debug模式:

//步骤三:通过config接口注入权限验证配置
wx.config({
debug: true,

报错:invalide signature....

利用调试接口调试:

http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

在 jsapi_ticket: 输入本次失败时的jsapi_ticket, 红色信息显示:jsapi_ticket 过期!

所以原因显然是 过了2个小时之后,jsapi_ticket的获取失败!

查看想代码:

核心代码:

    @Override
public void run()
{ while(true)
{
try{
HttpsURLConnection conn = HttpUtil.initHttpsConnection(accessTokenUrl, "GET");
String result = HttpUtil.getHttpsContent(conn, "utf-8"); JSONObject json = null;
if(result != null)
json = JSON.parseObject(result); if(json != null){
System.out.println("--------------AccessTokenJsapiTicketThread.222");
accessToken = new AccessToken(json.getString("access_token"), json.getLong("expires_in"));
System.out.println(JSON.toJSONString(json));
// 再获取jsapi_ticket
jsapiTicketUrl += accessToken.getAccess_token() + "&type=jsapi";
conn = HttpUtil.initHttpsConnection(jUrl, "GET");
result = HttpUtil.getHttpsContent(conn, "utf-8");
if(result != null){
json = JSON.parseObject(result);
if(json != null && json.getString("errmsg").equals("ok")){
jsapiTicket = new JsapiTicket(json.getString("errcode"), json.getString("errmsg"),
json.getString("ticket"), json.getLong("expires_in"));
System.out.println(JSON.toJSONString(json));
}else{
System.out.println(json.toJSONString());
System.out.println("get jsapiTicket failed----");
}
}
}else{
System.out.println("get access_token failed----");
}
}catch(IOException e){
e.printStackTrace();
} System.out.println("--------------AccessTokenJsapiTicketThread.444");
try{
if(null != accessToken){
Thread.sleep(60 * 1000); // 如果access_token为null,60秒后再获取
// Thread.sleep((accessToken.getExpire_in() - 200) * 1000); // 休眠7000秒
}else{
Thread.sleep(60 * 1000); // 如果access_token为null,60秒后再获取
}
}catch(InterruptedException e){
System.out.println("--------------AccessTokenJsapiTicketThread.555");
try{
Thread.sleep(60 * 1000);
}catch(InterruptedException e1){
e1.printStackTrace();
}
}
}
}

后台是 servlet随服务器启动的一个线程,每隔2小时运行一次,获取 token 和 jsapi_ticket.

关键的地方,在第二次获取 jsapi_ticket 的地址是有问题的:

jsapiTicketUrl += accessToken.getAccess_token() + "&type=jsapi";

这里导致 第二次 获取 jsapi_ticket 时,携带上了 第一次的 token,也就是携带上两个 token.

第二次的地址变成了:

https://api.weixin.qq.com/cgi-bin/ticket/getticket
?access_token=
HETAdAEwtAsz3GDeKwBxSq3JZt9FrD99vJc2Bvnp5ZmfU7BDVUR78TznZ8oQLmIGOqXfXOPYaJ8OlXBEdwlulf-XGkF1_K9FeHFUGndNIUIUMHjAEAEWR
&type=jsapi

qNpzWXz_d7GT1vchxHUuz5g5jqrwBb2OR5CXd7LldeDGsCa-8d8WQZkfDA157tcn_NmPglp-92c5AqTyqXTcM7aVG-Shw586QYjxmMVyrUxfz-P2GspidfCGAoEwvUsrKSHeAAARZO&

type=jsapi

可以看到 重复了 一次 access_token 参数。所以导致了 获取 jsapiTicket 失败。

修改就极其简单了:

String tmpUrl = jsapiTicketUrl + accessToken.getAccess_token() + "&type=jsapi";

conn = HttpUtil.initHttpsConnection(tmpUrl, "GET");
result = HttpUtil.getHttpsContent(conn, "utf-8");

定义一个临时变量,不要直接修改 jsapiTicketUrl 这个类的属性了。

总结:第一次成功,后面都失败,应该想到是第二次的参数有问题了。

网上看到很多人遇到{"errcode":40097,"errmsg":"invalid args hint: [vjNe7xxxxxx8vr19]"}这个错误,基本没有有价值的信息。还是自己调试解决问题。

记录下,方便其他遇到相同问题的筒子。该错误一定是:url 的参数有错误。

  

{"errcode":40097,"errmsg":"invalid args hint: [vjNe7xxxxxx8vr19]"}——记录一次微信错误处理的更多相关文章

  1. 微信开发之门店管理{"errcode":40097,"errmsg":"invalid args hint: [xxxxxxx]"}

    最近在做微信端开发,做到门店开发部分,在创建门店的时候遇到40097问题{"errcode":40097,"errmsg":"invalid args ...

  2. 微信小程序:模板消息推送提示{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXXXX]”}

    在开发小程序 模板消息定时推送功能时,在开发版测试程序功能运行正常,但提交到线上后提示报错{“errcode”:41030,”errmsg”:”invalid page hint: [gP1eXXXX ...

  3. 微信公众号开发上传图文素材带有卡片小程序报错:errcode=45166,errmsg = invalid content hint

    微信公众号开发自从支持允许在群发图文中插入小程序,方便了小程序的运营及推广.最近在三方服务开发中,要支持图文素材插入小程序遇到了一个很是棘手的问题.官方给出的插入小程序的示例支持文字.图片.卡片.如下 ...

  4. 【微信错误】{"errcode":"40013","errmsg":"invalid appid hint: [mackRA06203114]","success":false}

    一.异常背景 发送可以跳转小程序的公众号模版消息 二.原因 当前公众号没有和被跳转的小程序关联 三.解决办法 去公众号平台将小程序和公众号进行关联就可以了

  5. me.chanjar.weixin.common.error.WxErrorException: {"errcode":40013,"errmsg":"invalid appid hint: [xxxxxxxxxx]"}

    错误解决思路: 1.看看appid和appsecret的配置信息是否正确 2.查看前后端通信的http或者https协议是否正确( http://xxxxxxx 写成https://xxxxxxx)

  6. 微信小程序开发模板消息的时候 出现 errcode: 41028, errmsg: "invalid form id hint:

    小程序开发模板消息的时候  出现 errcode: 41028, errmsg: "invalid form id hint: 我是使用的微信支付发送模板消息,提示的formid无效的 大家 ...

  7. Solve Error: "errcode": 40016, "errmsg": "invalid button size hint"

    在使用微信官方给的添加自定义菜单的示例代码: { "button": [ { "name": "扫码", "sub_button& ...

  8. Java微信开发_Exception_02_"errcode":40164,"errmsg":"invalid ip 61.172.68.219, not in whitelist hint

    ip查询网址: http://www.ip.cn/ 一.异常现象 今天开始做微信开发,在办公室时能正常获取access_token,晚上回家之后获取access_token时却报出下列错误信息: {& ...

  9. 获取access_token时却报出下列错误信息:{"errcode":40164,"errmsg":"invalid ip 61.172.68.219, not in whitelist hint: [KJZfAa0644e575]"},以及一些其他报错

    获取access_token时却报出下列错误信息:{"errcode":40164,"errmsg":"invalid ip 61.172.68.21 ...

随机推荐

  1. 如何权衡自己的angular水准

    angular是现在常用的一个前端MVVM框架,感受下下面的问题权衡下自己的水准吧. 1. angular的数据绑定采用什么机制?详述原理2. 两个平级界面块a和b,如果a中触发一个事件,有哪些方式能 ...

  2. vue-router2.0 组件之间传参及获取动态参数

    <li v-for=" el in hotLins" > <router-link :to="{path:'details',query: {id:el ...

  3. CSS系列目录

    1.  在HTML中引入CSS的方法 2.  CSS选择器 2.1 CSS3新增选择器 3.  CSS的继承与层叠特性 4.  CSS中盒子模型 5.  CSS中盒子之间的关系 6.  CSS中盒子的 ...

  4. JS中 call() 与apply 方法

    1.方法定义 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象. 说明: call ...

  5. AFNetworking 3.0 源码解读(一)之 AFNetworkReachabilityManager

    做ios开发,AFNetworking 这个网络框架肯定都非常熟悉,也许我们平时只使用了它的部分功能,而且我们对它的实现原理并不是很清楚,就好像总是有一团迷雾在眼前一样. 接下来我们就非常详细的来读一 ...

  6. Vertica DBD 分析优化设计

    DBD = Database Designer,是Vertica数据库优化中最主要的原生工具. 首先运行admintools工具,按下面步骤依次执行: 1.选择"6 Configuratio ...

  7. 匹夫细说C#:可以为null的值类型,详解可空值类型

    首先祝大家中秋佳节快乐~ 0x00 前言 众所周知的一点是C#语言是一种强调类型的语言,而C#作为Unity3D中的游戏脚本主流语言,在我们的开发工作中能够驾驭好它的这个特点便十分重要.事实上,怎么强 ...

  8. PyQt4入门学习笔记(五)

    PyQt4里的对话框 对话框是大多数GUI应用中不可分割的一部分.一个对话框是两者或多者的会话.在GUI内,对话框是应用向人说话的方式.一个对话框可以用来输入数据,修改数据,改变应用设置等等. QtG ...

  9. 【手记】为windows2008建个睡眠快捷方式

    ----------------201607041343更新---------------- 在另一台电脑上SetSystemPowerState又不好使了,执行了根本没反应.又回头来试SetSusp ...

  10. PHP基础知识第三趴

    今天如约放送函数部分吧,毕竟预告都出了,"广电"也没禁我......