微信小程序显示token提取手机号码失效

微信小程序显示token提取手机号码失效,第1张

第一次获取access_token后存放至redis中,并将获取accessToken接口返回的有效时长设置为过期时间。然后在生产环境上用这个全局的access_token去获取微信用户手机号时一直提示失效:{"errcode":42001,"errmsg":"access_token expired rid: 62b9305a-46e1bbcb-429c805f"}。但是在本地配置生产环境地址然后用同一个access_token就能获取到用户手机号。

已经确认access_token只有一个口来获取,不存在其他地方调用的情况,也就是说全局唯一,而且是在有效期内,但生产上缺一直提示失效。

1、解析失败、请检查信息是否填写正确

服务器地址中不能使用其他的端口号,把端口号去掉,默认就是走80或443端口,另外这个地址需要外网访问,我使用了nat123映射了80端口,这个工具需要一点点小费

2、请求超时,请检查信息是否填写正确

这个一般是由于后端CheckSignature方法里 经过SHA1加密的字符tmpStr和signature不匹配导致的,一开始我使用 if( tmpStr==signature ) return true其实应该使用 if( tmpStr.Equals(signature, StringComparison.OrdinalIgnoreCase) ),SHA1加密以后返回的字符是大写

3、Token校验失败,请检查确认

这个一般是由于后端接口返回的数据类型不对,大多数接口都会封装一个ApiResutModel用来统一返回类似于 { code:200, msg:"",data:{} } 的结果,但是消息推送配置里只能接受纯文本,因此修改为 HttpContext.Response.WriteAsync(echostr)

二、消息推送

1、invalid openid rid: 5f5f0b66-3e0db526-555e7b82 无效的openid

这个一般由于后端请求subscribeMessage.send接口时传递的json格式错误,要不就是key顺序问题,要不就是key首字符大写的问题,一般后端定义的请求模型首字母都是大写,而小程序接口需要的json必须全部小写

2、{ "errcode":43101,"errmsg":"user refuse to accept the msg hint: [EW7iIa04390500]" } 用户拒绝接受消息

当前端使用wx.requestSubscribeMessage已经成功授权后还提示上面的错误,一般是由于后端配置的模板id和小程序的模板id不匹配导致的

3、{"errcode":47003,"errmsg":"argument invalid! data.date4.value invalid rid: 5f4084e5-7924012e-20ad3837"}

如果消息模板中定义了date,那么日期是不能包含时间的,在C#中使用DateTime.Now.ToShortDateString()截取年月日


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11953502.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-19
下一篇2023-05-19

发表评论

登录后才能评论

评论列表(0条)

    保存