小程序授权手机号两次才成功,后台报错:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 c

最近做项目中遇到小程序授权手机号问题,第一次点击授权没有任何反应,并且后台报错:java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
然后二次点击再授权就成功了,后台日志发现问题出现在代码:wxService.getUserService().getPhoneNoInfo(session.getSessionKey(), encryptedData, iv);
网上找了好多都没发现问题,最后找到官方
官方网址:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html
其实意思很明显,因为 session_key 不正确而校验签名失败或解密失败。
所以问题就还是在前端传递问题上:
修改方案:
前端将wx.getInfo -> wx.login这个调用顺序换成wx.login->wx.getInfo ,先调用wx.login就让微信那边知道你这个用户又重新登录了,然后再调用wx.getInfo获取的encryptedData, iv这两个值就会对应新的sessionKey;
如此问题得到完美解决!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值