微信小程序:wx.login和getPhonenumber获取手机号解密失败问题

简介: 微信小程序:wx.login和getPhonenumber获取手机号解密失败问题

原来的登录处理流程:

通过按钮点击触发,在处理函数内调用wx.login()


发现每次登录,第一次都会解密失败,第二次就成功了。


<button open-type="getPhoneNumber" 
  bindgetphonenumber="getPhonenumber">登录</button>
async getPhonenumber(e){
   wx.login()
}

此时,是先点击的获取用户信息,再进行登录。

逻辑是不对的,因为获取手机号之后才进行的登录


第一次获取手机号,微信使用的是当前session_key对手机号信息进行加密,而我们的session_key还是空的,或者用户之前登录过,那么session_key就是上一次登录的状态。解密失败。


第二次获取手机号,我们通过上次登录,获取了最新的session_key,服务端也存了同样的一份session_key, 微信加密和我们服务器解密使用的是同一份数据。解密成功。


解决办法

知道了登录的问题所在,当用户授权之前,应该使得服务端session_key 和 当前session_key保持一致。


// 该方法应该在进入页面的时候,或者getPhonenumber之前调用
login(){
   // 如果有session_id,可以检查一下是否过期
  wx.checkSession()
  // 过期就登录
  wx.login()
  // 将session状态同步至服务器
  // 登录成功后本地可以保存一份session_id
}
async getPhonenumber(e){
  // 获取手机号逻辑
}

解决方法二:

微信基础库 2.21.2 开始 提供了新的获取手机号接口,通过动态令牌code就能换取用户手机号信息,能避免使用session_key不一致的问题。


https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/getPhoneNumber.html

相关文章
|
4月前
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
|
5月前
|
Android开发
微信加好友脚本自动,手机号自动添加定时,可群聊通讯录添加
这是一款基于 AutoJS 的微信自动化脚本,适用于 Android 7.0+ 系统,实现定时批量添加好友功能。采用分层设计(主控模块+功能模块+配置模块)
微信养号脚本,导入手机号自动添加,autojs代码分享
这段代码实现了基本的微信自动添加好友功能,包括读取手机号文件、启动微信、搜索用户和发送
企业微信批量加好友脚本,企业微信自动加手机号好友软件,自动同意群发消息自动回复
这是一款为企业微信设计的自动化营销工具,能够一键批量加好友并自动回复消息。通过模拟操作实现自动化流程,提升网络营销效率。
|
5月前
|
监控 数据可视化 BI
微信计数器统计工具,QQ统计器手机APP,通过autojs实现后台
这是一款基于AutoJS的微信/QQ新增好友监控脚本,具备后台运行、自动统计每日新增好友数量、生成简单报表及定时提醒功能。
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
3199 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
小程序
如何将CCBUPT全能墙小程序添加到手机桌面
如何将CCBUPT全能墙小程序添加到手机桌面
168 0
|
存储 小程序 JavaScript
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
2928 7