微信小程序: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

相关文章
|
API 数据安全/隐私保护 开发者
企业微信自动加好友软件,导入手机号批量添加微信好友,python版本源码分享
代码展示了企业微信官方API的合规使用方式,包括获取access_token、查询部门列表和创建用户等功能
微信养号脚本,导入手机号自动添加,autojs代码分享
这段代码实现了基本的微信自动添加好友功能,包括读取手机号文件、启动微信、搜索用户和发送
企业微信批量加好友脚本,企业微信自动加手机号好友软件,自动同意群发消息自动回复
这是一款为企业微信设计的自动化营销工具,能够一键批量加好友并自动回复消息。通过模拟操作实现自动化流程,提升网络营销效率。
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
4081 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
小程序
如何将CCBUPT全能墙小程序添加到手机桌面
如何将CCBUPT全能墙小程序添加到手机桌面
303 0
|
存储 小程序 JavaScript
|
存储 小程序 JavaScript
|
自然语言处理 搜索推荐 小程序
微信公众号接口:解锁公众号开发的无限可能
微信公众号接口是微信官方提供的API,支持开发者通过编程与公众号交互,实现自动回复、消息管理、用户管理和数据分析等功能。本文深入探讨接口的定义、类型、优势及应用场景,如智能客服、内容分发、电商闭环等,并介绍开发流程和工具,帮助运营者提升用户体验和效率。未来,随着微信生态的发展,公众号接口将带来更多机遇,如小程序融合、AI应用等。
|
10月前
|
消息中间件 人工智能 Java
抖音微信爆款小游戏大全:免费休闲/竞技/益智/PHP+Java全筏开源开发
本文基于2025年最新行业数据,深入解析抖音/微信爆款小游戏的开发逻辑,重点讲解PHP+Java双引擎架构实战,涵盖技术选型、架构设计、性能优化与开源生态,提供完整开源工具链,助力开发者从理论到落地打造高留存、高并发的小游戏产品。