学习礼仪的心得体会⼩程序(抖⾳⼩程序):⼿机号码解析失败解决⽅案
在⼩程序开发中,可能需要⽤户授权获取⽤户信息,⽽⽤户信息涉及到⼿机号等敏感数据,⼀般的⼩程序开发平台,会将数据进⾏加密,然后通过对称加密算法进⾏加密解密。在获取⼿机号的过程中由于流程的理解错误可能会出现解密⼿机号失败的问题。本⽂介绍⼀种⽐较适⽤的解决办法,希望给遇到坑的同学⼀个参考。
1 问题描述
本⽂以抖⾳⼩程序(⼩程序获取流程和接⼝⼀模⼀样)为例,最近博主在做⼀个抖⾳⼩程序的⼩项⽬,前端在获取⽤户⼿机号的时候,需要调⽤tt.login接⼝进⾏登录,登录后返回⼀个code,这个code有3分钟的失效时间,根据这个code可以获取到sessionKey,这个sessionKey类似于对称加密的密钥,会对⽤户信息进⾏加密。在获取⽤户信息的时候,前端
需要将 <button> 组件 open-type 的值设置为 getPhoneNumber。⽤户点击后会弹出⼀个授权弹窗让⽤户确认(若该⽤户账户未绑定⼿机号码会执⾏⼀次绑定⼿机号码的流程;授权弹窗每次使⽤都会弹出)。 ⽤户同意后,开发者可以通过 bindgetphonenumber 事件回调获取到⼀个加密数据,开发者可以把该数据传回到⾃⼰的服务端进⾏解密获取⼿机号。
获取到的加密数据需要使⽤sessionKey进⾏解密,因此在获取⽤户信息前,需要登录⼀次,获取到code,然后根据code获取到sessionKey,再根据sessionKey进⾏加密数据的解密,解析出⼿机号。
根据博主猜测,抖⾳在登录后会⽣成⼀个code,和⼀个对应的sessionKey,在会话期间(session未过期)的时候获取⽤户信息,会将⽤户信息使⽤sessionKey进⾏数据的加密,进⾏数据的解密也需要使⽤到sessionKey。code和sessionKey是对应的,但是它们的失效期是不⼀样
新高考志愿填报的,code的失效期是3分钟,sessionKey的失效时间是不定的,只要⽤户活跃在页⾯上都不会失效。在获取到code的3分钟内调⽤code-2-session接⼝,会获取到sessionKey,如果3分钟后根据code获取sessionKey将会获取失败,因此解密也会失败。
汽车过户费1.1 初始实现
那首歌很好听歌词因为⽆法判断⽤户什么时候开始获取⽤户信息,所以⽤户⼀进⼊页⾯,前端就会调⽤tt.login接⼝进⾏登录,然后放到localstorage缓存中,在⽤户点击按钮时,弹出授权框⽤户确认后获取到⽤户信息的加密数据,然后前端将缓存的code和加密数据⼀并传给后端。后端⽤code先去调
怎样自动生成目录⽤code-2-session接⼝获取到sessionKey,然后以sessionKey为密钥进⾏AES解密,获取到⼿机号返回给前台。整个流程看起来没什么问题,但是⼀旦⽤户在页⾯停留时间超过3分钟,然后再去获取⽤户信息会失败,主要是因为code已经失效,获取sessionKey会失败。
image.png我们结婚了130727
发布评论