请教大家是否有出现获取小程序码不稳定的现象?
发布于 7 年前 作者 leideng 13312 次浏览 来自 问答

小程序上线一年多,一直都比较稳定或者说没有太注意小程序码生成的问题。近期出现用户反馈小程序码生成不了,就进行了排查:

a、怀疑token被其他应用刷新导致我的应用token失效,进入小程序将安全域名非我应用的域名全部剔除,并且检查本域名下只有我一个应用在获取token;

b、怀疑自己应用有多处地方触发生成token,全局检查并未发现此情况;

c、怀疑定时获取token失败,通过日志查看,服务器的确每1000秒成功获取新token,为了验证将原有1000秒获取token改成了300秒也就是5分钟获取一次;

做了c步骤以后,发现更加不稳定了,临界5分钟时也就是token获取前1分钟,生成小程序码大概率是失败的,失败原因都是token无效,所以想请问,官方文档是写旧token有5分钟有效期,这个是不是最近做了什么调整?另外同一个token,前一次失败,再点一次生成码又成功,又是什么原因?

1、token原设定时间是1000秒获取一次,也就是大概17分钟左右一次

//获取当前小程序的ACCESS_TOKEN
            string Uri = "https://api.weixin.qq.com/cgi-bin/token";
            string AppID = CommonHelper.GetAppSettings("WX_APPID");
            string AppSecret = CommonHelper.GetAppSettings("WX_AppSecret");
            string Param = string.Format("grant_type=client_credential&appid={0}&secret={1}", AppID,AppSecret);
             
            var jSon = HttpHelper.HttpGet(Uri, Param);
            LitJson.JsonData jobj = LitJson.JsonMapper.ToObject(jSon);
            if (jobj.ContainsKey("access_token"))
……

2、比较多场景用到小程序码而且是大量的,所以使用了wxacode.getUnlimited

这个接口也比较简单就是将token作为参数去请求小程序码

 string URI = string.Format("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={0}", Weixin_API.ACCESS_TOKEN);
            string DataJson = string.Empty;
            DataJson = "{";
            DataJson += string.Format("\"scene\":\"{0}\",", scene);//所要传的参数用,分开
            DataJson += string.Format("\"width\":\"{0}\",", 430);
            DataJson += string.Format("\"page\":\"{0}\",", path);//扫码所要跳转的地址,根路径前不要填加'/',不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
            DataJson += "\"line_color\":{";
            DataJson += string.Format("\"r\":\"{0}\",", "0");
            DataJson += string.Format("\"g\":\"{0}\",", "0");
            DataJson += string.Format("\"b\":\"{0}\"", "0");
            DataJson += "},";
            DataJson += string.Format("\"is_hyaline\":true");
            DataJson += "}";
            byte[] res = HttpHelper.HttpPost1(URI, DataJson);
              //存储小程序码
2 回复

您好!生成小程序码的接口有两个,可以根据情况排查。

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html

你说了很多,都没说到点上,代码跟没发一样。可能访问频率高了,问题也暴漏出来了,代码逻辑不严谨,导致的access_token缓存不正常。你坚信自己代码没错的话,你应该把日志请求都发出来,光靠描述没什么用,大家不知道你是个什么情况,反正我没出现过这种问题

回到顶部