项目场景:
uniapp 微信小程序一键授权登录,登录是偶发性报错
例1:Unexpected character encountered while parsing value: v. Path “, line 1, position 1.”
例2:Unexpected character encountered while parsing value: G. Path ‘’, line 0, position 0
搜索了一下是解密问题:第一次或间断性解密失败
解决方案:
在点击按钮之前就应该先调用 wx.login 得到code或者session_key,然后 点击 按钮 ,所以 在 onload 或者 onshow 里面 就应该 wx.login 得到 code或者 session_key,建议放在onshow 里,不然可能用户误返回,然后再点击code之前用过了没获取新的会报错
原因分析:
我没有分两步,是一步点击授权绑定手机号直接登录,我在decryptPhoneNumber里先写了uni.login获取code置换用户SessionKey,然后成功后把结合后的数据传给后端,结果就出现了上述问题
<button class='p1 login-btn' type='primary' open-type="getPhoneNumber"
@getphonenumber="decryptPhoneNumber"> 微信登录 </button>
问题就出在点击 button 没有 wx.login 得到code 的时候,iv和encryptedData 就已存在一个session_key ,和之后得到的session_key 不相同,所以偶尔解析失败