用uniapp 方式获取微信手机号授权,前后花了很大精力在解决解密手机号失败情况,此处加以说明,希望碰到类型情况的网友出坑:
<button open-type=”getPhoneNumber” @getphonenumber=”getPhoneNumber”>微信快捷登录</button>
1,第1种解密失败:
问题现象: 第一次解密失败,第二次成功
解决方法:getPhoneNumber()方法中不要调用uni.login获取code,而是要先于getPhoneNumber()获取code,如在onLoad()中先调用(如大多数网友解决方法)。然后在getPhoneNumber()方法中调用后台接口(传参,code,encryptedData和iv)解密手机号。
2,第2种解密失败:
问题现象: 第一次解密成功,后续均失败(除非页面重新加载)
基于第1种现象解决后,又出现第2类现象,获取手机号成功后调用自定义的登录接口返回失败,此时就需要再次授权和登录,那么此时解密失败,咋整?那么需要在第1步中获取code后,还要向服务器调用接口获取SessionKey,然后再调用后台接口(传参,SessionKey,encryptedData和iv)解密而后去手机号,继而登录等后续操作。
结论:第2种方式能解决加密失败问题。 猜测和微信获取各数据状态有关,官方也不给个明确说明
版权声明:本文为lifs419原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。