发布时间:2023-07-12 15:00
原因1: 小程序没有关联绑定微信开放平台
原因2: 同一个微信开放平台下的相同主体的 App、公众号、小程序,如果用户已经关注公众号,或者曾经登录过App或公众号,则用户打开小程序时,开发者可以直接通过 wx.login 获取到该用户UnionID,无须用户再次授权。(解读:用户如果没有登录过app,也没有登录过公众号,也没有关注过公众号的情况下,小程序中通过 wx.login 是获取不到 unionid的, 此时需要通过对wx.getUserInfo回调过来的加密数据发送至后台进行解密从而得到用户UnionID). 官方文档: wx.getUserInfo()用法
后台使用shiro框架时发现: 小程序调用登录接口, 后台shiro确实也登录成功了, 但是之后访问其他接口还是被shiro拦截提示没有登录!
原因: 小程序的每次请求都是一个新的会话, 所以后台shiro中subject主体的sessionId也不一致, 故认为没有登录;
解决: 在登录接口成功时将shiro创建的sessionId返回给前端小程序, 保存在storage中, 在下次发送request请求时加上请求头: Cookie:此sessionId, 代码如下:
// 调用登录接口,返回{'status': 'success', 'sessionId':'SHAREJSESSIONID=1d148a01-c69d-4f68-96ea-f4d8b4bb6f53'}, 将sessionId存入缓存或者全局变量中:
wx.setStorageSync('USER_COOKIE', 'SHAREJSESSIONID=' + json.sessionId);
// 发送请求时:
wx.request({
url: 'xxxx',
data: {},
method: 'GET',
header: {
'clientType': 'wxLittleApps',
'content-type': 'application/x-www-form-urlencoded;charset=utf-8',
'Cookie': wx.getStorageSync('USER_COOKIE')
},
success: function(json){
}
})
shiro有关session的部分配置如下:
......
使用wx.navigateTo或者wx.redirectTo进行页面跳转, 死活跳不过去, 最后在fail回调中打印看一下, 发现tab栏路径不能使用以上两种方法跳转, 只能使用wx.switchTab();
请求携带的参数在springMVC封装时错误导致. 昨天遇到一个问题: 请求相同的接口, 不带参数的请求可以成功, 而带参数的请求报了400, 究其原因发现参数中有个time参数, 传递的是毫秒值, 而后台springMVC参数封装使用Date类型, 所以报了400
设置showToast的duration不生效, 结果发现是因为wx.hideLoading()方法不仅仅把loading框关掉了, 也把showToast提示框给关了, 网上说两者用的同一个框. 解决方法就是把wx.hideLoading()方法放在wx.showToast()之前.
小程序发送模板消息只能通过两种方式触发: 1.表单提交; 2. 微信支付
今天在使用表单提交触发发送模板消息时, 总是返回41028错误代码, 检查了多遍配置和form_id等参数都没有问题, 为什么发送不了. 后来才知道发送有限制: 谁触发的表单就只能发送给谁…(不人性化,稍后给出解决方案)比如A提交表获取form_id只能推送消息给自己, 不能使用此form_id发送给别的用户(openId). 并且一次表单提交只能发送一条模板消息, 且有效时长为7天, form_id不能重复使用.
① 改造用户经常访问的小程序页面的点击或者跳转事件为form, 保存form_id和openId至数据库, 每次发消息消耗一条数据库记录;
实现过程中出现的问题:
1.把一navigator按钮改造为表单提交后, 在开发者工具中测试每次都可以获取formId, 但是在真机测试, 有的时候拿得到, 有的时候拿不到. 这是因为: 若submit事件执行时间大于跳转时间, 则submit事件会被跳转事件打断. 解决: 把跳转事件写在submit事件的回调中.
②
问题: 这几天在调试生成二维码, 需要用的access_token, 调用接口返回access_token, 有效时间为7200s, 也就是两个小时. 但是运行一段时间后(完全没有两个小时), 二维码就生成不了, 返回的二维码大小也不正常,109字节, 正常大小应该是100kb左右. 右键记事本打开, 发现提示:
{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [FEWb.A02631091]"}
意思很明了: access_token无效或者不是最新的!
原来access_token生成多次的话, 之前的就算没有到过期时间也会在5分钟后失效, 5分钟后只最新的可用.
但是项目中并没有其他调用获取access_token接口的地方啊, 为什么还会失效?
解决:
原来是因为! 我们项目两个环境: 测试服和正式服! 使用的是相同的小程序配置(appId和secret). 两个服务器都在调用获取access_token接口!!!A刷新access_token, B五分钟后就失效… B刷新则A5分钟失效!!! 深坑.
标签中字符串不换行后台返回字符串带换行,如下:
1.双手握杠,两腿悬空,双手交替前行,可根据个人情况隔格前行;
2.双手握杠,做引体向上练习;
3.每个运动位仅允许1人同时使用;
4.每个运动位允许最大的使用者重量为120kg,设计的最大训练载荷为160kg。
但是在前端一行展示, 把
标签换成
后内容自动换行(原样输出)